<%@ Language="VBScript"%> <% Function FP_HTMLEncode(str) FP_HTMLEncode = str FP_HTMLEncode = Replace(FP_HTMLEncode,"&","^^@^^") FP_HTMLEncode = Server.HTMLEncode(FP_HTMLEncode) FP_HTMLEncode = Replace(FP_HTMLEncode,"^^@^^","&") End Function Function FP_FieldVal(rs, fldname) FP_FieldVal = FP_HTMLEncode(FP_Field(rs, fldname)) if FP_FieldVal = "" then FP_FieldVal = " " Select Case fldname Case "Name" if InStr(rs("Code"),"N") then FP_FieldVal = FP_FieldVal & "Note" end if Case "Press Run" if InStr(rs("Code"),"N") then FP_FieldVal = "" & FP_FieldVal & "" end if Where = InStr(rs("Code"),"R") if Where>0 then SuperScript = Mid(rs("Code"),Where+1,1) FP_FieldVal = FP_FieldVal & "" & SuperScript & "" end if Case "Received Per Year" if InStr(rs("Code"),"N") then FP_FieldVal = "" & FP_FieldVal & "" end if Where = InStr(rs("Code"),"Y") if Where>0 then SuperScript = Mid(rs("Code"),Where+1,1) FP_FieldVal = FP_FieldVal & "" & SuperScript & "" end if Case "Published of Received" if InStr(rs("Code"),"N") then FP_FieldVal = "" & FP_FieldVal & "" end if Where = InStr(rs("Code"),"P") if Where>0 then SuperScript = Mid(rs("Code"),Where+1,1) FP_FieldVal = FP_FieldVal & "" & SuperScript & "" end if End Select End Function Function FP_Field(rs, fldname) If Not IsEmpty(rs) And Not (rs Is Nothing) and Not IsNull(rs(fldname)) Then Select Case rs(fldname).Type Case 3 FP_Field_1 = Cstr(rs(fldname)) FP_Field_len = len(FP_Field_1) for idx=1 to FP_Field_len FP_Field = Mid(FP_Field_1,FP_Field_len-idx+1,1) & FP_Field if (idx <> FP_Field_len) AND (idx MOD 3) = 0 then FP_Field = "," & FP_Field next Case 128, 204, 205 ' adBinary, adVarBinary, adLongVarBinary FP_Field = "[#BINARY#]" Case 201, 203 ' adLongVarChar, adLongVarWChar if rs(fldname).DefinedSize > 255 then ' check for Access hyperlink fields (only absolute http links) fp_strVal = rs(fldname) fp_idxHash1 = InStr(LCase(fp_strVal),"#http://") if fp_idxHash1 > 0 then fp_idxHash2 = InStr(fp_idxHash1+1,fp_strVal,"#") if fp_idxHash2 > 0 then ' this is an Access hyperlink; extract the URL part fp_strVal = Mid(fp_strVal,fp_idxHash1+1) if Right(fp_strVal,1) = "#" then fp_strVal = Left(fp_strVal,Len(fp_strVal)-1) end if end if end if FP_Field = fp_strVal else FP_Field = rs(fldname) end if Case Else FP_Field = rs(fldname) End Select Else FP_Field = "" End If End Function %>

An Approximate Print Journal Ranking

This ranking system attempts impose an order on the "difficulty" of a particular literary journal -- that is, the degree of likelihood that a given poem, submitted by a reasonably accomplished poet, will be accepted for publication.  The system is based upon a mix of objective and subjective criteria. 

The "rank" is arbitrarily assigned on a scale of 1 to 10, and is somewhat "logarithmic" ... as the Richter Scale is, for example.  The difficulty involved in getting accepted at each level is estimated to be significantly greater than the difficulty at the last level.   

Methodology and Criteria

The objective criteria are indicated below, and include (but are not limited to) 

There are also a variety of subjective criteria that have been developed by a group of published poets and academics.  The "acceptance ratio" alone doesn't dictate rankings, for example.  Larger, more visible publications (e.g., Atlantic Monthly, New Yorker, Poetry) must be assumed to receive very large numbers of mediocre poetry from individuals who would never think to submit to, say, The Gettysburg Review.  Even two publications with similar acceptance ratios cannot be assumed to be equally likely to accept a given poem.  The prestige of a journal will influence the composition of poets who submit there. Submitting to the Kenyon Review, for example, ensures that one will be competing for "page-space" against a larger number of well-known and accomplished poets than a journal of less renown, but with a similar acceptance ratio.

The column for "Honors & Comments" is heavily annotated with the journal's occurrences in Best American Poetry.  We realize that this is a very approximate surrogate for "prestige", and is not a major factor in the rankings.  Other factors affecting the rankings (but not explicitly documented in the table) include the number of Pushcart Prizes won by poems from the indicated journal, and whether the journal runs competitions for one or more poems.

The editorial preferences of  differing journals confound the general notion of "difficulty."  It is safe to say, for example, that a poem accepted by Fence or New American Writing may stand little chance of acceptance by a journal with more conservative tastes.  In other words, a journal may be significantly more "difficult" for one poet than another.


Different journals refer to their "number of submissions" differently.  In some cases, the number includes both poetry and fiction submissions.  In some cases, it pertains to the actual number of "envelopes" received.  In other cases, the count includes each actual manuscript submitted (e.g., each poem or work of fiction).  This discrepancy in what exactly constitutes a submission make the task of calculating (for example) acceptance rate impossible -- except as a rough measure.  For publications for which we know how a submission is defined, we will note that.

It is also important to note that virtually every literary journal solicits work from established poets.  In the case of new journals and established mainline magazines, this can account for a majority of the poetry.  The presence of solicited work, of course, increases greatly the difficulty of getting an unsolicited submission accepted.

Press Run and Received Per Year

The Press Run and Received Per Year numbers are taken from reliable sources, when available.  In many cases they are estimates.  We encourage journals to email us with corrections when we our data is incorrect.

In the case of most literary journals, a majority of the Press Run is dedicated to subscriptions from individuals and libraries.  Library subscriptions often make up 50% to 80% of the press run, which implies that the readership is much larger than the (often small) press run numbers.

We have tried to obtain accurate data for the Received Per Year numbers.  We only cite numbers which we can infer or substantiate from sources that are sometimes as much as 5 years old.  We strongly suspect that the Received Per Year numbers have risen dramatically in that time.  It is our suspicion that the top 20-30 publications now receive in excess of 10,000 submissions per year.


This scale is NOT meant to characterize one publication as "better" than another publication.  Some of the assessment group's favorite publications reside in many of the lower and middle ranking levels.  This ranking ONLY represents the group's consensus of "how tough" the journal is to get published in. 

We fully admit that this ranking system is flawed and approximate.  Any given publication may "deserve" a ranking that is a point higher or lower.  We will endeavor to review and revise the ranking as additional information is available (and as time permits).


The publications with the annotation "Note" have been updated with current data graciously supplied by the editor of the publication, for which we are very thankful!  Data that has been confirmed by the publication appears in green.

1For the purposes of the New England Review, a submission is an individual packet of submitted work.  The actual number of individual submitted poems is closer to 30,000.

2Press Run numbers for The New Yorker, The Atlantic Monthly, Hudson Review, American Poetry Review, Threepenny Review, Poetry, Ploughshares, and Boston Review were taken from published data supplied by the magazines. 

3"Received Per Year" numbers for The Atlantic Monthly obtained from their web site (http://www.theatlantic.com/about/atlfaqf.htm#circulation)

4Circulation (Press Run) for The New Republic cited in a Salon.com article.

<% dim conn, strsql, rsuser, strMDBPath dim align align = Array("left","center","right","right","right","left","left") dim widths widths = Array("177","73","65","76","93","249","208") dim titles titles = Array("Name","Quality","Press Run","Received Per Year","Published of Received","Comments","Who Published") 'Response.Write "" 'Response.Write "" 'For x = 1 To 7 'column = "" & vbCrLf 'Response.Write column 'Next 'Response.Write "" 'Response.Write "" set conn=server.createobject("ADODB.Connection") set rsuser=server.createobject("ADODB.Recordset") strMDBpath = Server.MapPath("/Poetry.mdb") conn.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & strMDBPath strsql = "select * from RanksData ORDER BY RanksData.Quality DESC, RanksData.Name;" rsuser.open strsql,conn,1,2 ' Loop through our records Do While Not rsuser.EOF Response.Write vbTab & "" & vbCrLf For x = 1 To 7 column = vbTab & vbTab & "" & vbCrLf Response.Write column Next Response.Write vbTab & "" & vbCrLf 'Move to the next record! rsuser.MoveNext Loop 'Closing html table tag 'Response.Write "


How Tough  Press Run  Received Per Year  Published of Received  Honors & Comments  Who Published
" 'column = column & titles(x-1) 'column = column & "
" 'knock off the blanks 'wsite = trim(rsuser.Fields(x - 1)) wsite = FP_FieldVal(rsuser, titles(x-1)) if wsite <> "" then column = column & wsite else column = column & "  " end if column = column & "
" & vbCrLf ' Close all objects and clear from Memory rsuser.Close Set rsuser = Nothing conn.Close Set conn = Nothing %>