This article is part of Bright Spots, a series highlighting schools where every child learns to read, no matter their zip code. Explore the Bright Spots map to find out which schools are beating the odds in terms of literacy versus poverty rates.

When The 74 started looking for Bright Spots — public schools that are beating the odds  helping low-income students learn to read — it was hard to miss how well charter schools performed. Charters made up 7% of the elementary schools in our national sample but 11% of those that we identified as delivering exceptional results, with reading scores that far exceed what might be expected given the poverty rates of the populations they serve.

Charters were even more overrepresented in New York. There, charter schools made up 9.5% of the state sample, but they earned 38.5% of the spots on our list of exemplars. 

By our metric, the 10 highest-scoring schools in the state were all in New York City — and seven of them were charter schools located in the Bronx. Another was a charter school in Harlem, and the other two were traditional public schools in Brooklyn.

div{
float: left;
}
#right_map_nav a{
text-decoration: none;
margin-right: 10px;
}
#right_map_nav li {
display: inline-block;
}
#map_filter,
#map_info{
margin: 0px 10px;
}
.key_item a{
color: white;
}
.key_item:before{
content: ”;
width: 10px;
height: 10px;
background-color: #4f91d3;
border-radius: 100%;
display: inline-block;
margin-right: 5px;
}
.key_item:last-of-type:before{
background-color: #f9de4f;
}
body.show_about .key_item{
transform: translateY(-25vh);
}
li.about_play a{
color: #c9c9c9;
}
li.about_play a:hover{
color: white;
}
body.show_about li.about_play a{
color: #f9de4f;
}
body.show_about .mapboxgl-ctrl-bottom-left,
body.show_about .about_play:after{
display: none;
}
.about_play:before{
content: ‘\25BA’;
color: #c9c9c9;
display: inline-block;
margin-right: 10px;
transform: rotate(0deg);
transition: transform 0.25s linear;
font-family: serif;
}
body.show_about .about_play:before{
transform: rotate(90deg);
}
.about_play:after{
content: ‘|’;
color: #c9c9c9;
display: inline-block;
margin-right: 5px;
}
#map_header h1 {
margin: 0px;
padding: 0px;
font-size: 1rem;
position: absolute;
top: 0px;
bottom: 0px;
right: 0px;
left: 0px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
#map canvas {
cursor: hand;
}
.map-overlay {
display: none;
font: 12px/20px sans-serif;
padding: 10px;
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
overflow: hidden;
}
.map-overlay-inner {
background: #fff;
padding: 10px;
height: 100%;
}
.map-overlay-inner h3 {
margin-bottom: 0px;
}
.map-overlay-inner h4 {
margin-top: 0px;
margin-bottom: 0.5em;
font-weight: 100;
}
.map-overlay-inner p {
margin-top: 0px;
margin-bottom: 0.25em;
}
.map-overlay-inner hr {
color: #3393d9;
}
.mapboxgl-popup{
max-width: 300px !important;
}
.mapboxgl-popup-content{
font-size: 0.65rem;
}
.mapboxgl-popup-content > div{
width: 280px;
border-top: 4px solid #3393d9;
}
.mapboxgl-popup-content > div.exceptional{
border-top: 4px solid #dbc31e;
}
.mapboxgl-popup-content h3{
font-size: 1.25em;
margin-bottom: 0;
margin-top: 0.5em;
}
.mapboxgl-popup-content h4{
font-size: 1em;
font-weight: 400;
margin-top: 0;
margin-bottom: 1em;
}
.mapboxgl-popup-content h5 {
margin-bottom: 2px;
font-size: 0.9em;
color: #3393d9;
font-weight: normal;
margin-top: 2px;
line-height: 1rem;
}
.mapboxgl-popup-content p{
margin-bottom: 0px;
margin-top: 0px;
font-weight: bold;
}
.mapboxgl-popup-content p > label,
.mapboxgl-popup-content p.chart_explanation{
font-weight: normal;
}
p.chart_explanation{
padding-top: 10px;
margin-top: 10px;
padding-bottom: 15px;
margin-bottom: 0px;
/*border-bottom: 1px solid black;*/
font-family: ‘Tiempos’;
font-size: 13px;
}
p.chart_explanation span{
font-weight: bold;
background-color: black;
border: 2px solid black;
color: white;
padding: 0 1px;
}
p.chart_explanation span:nth-of-type(2){
background-color: #cf0a0a;
border: 2px solid #cf0a0a;
color: white;
}
p.chart_explanation span:nth-of-type(3){
background-color: #3393d9;
border: 2px solid #3393d9;
color: white;
}
div.exceptional p.chart_explanation span:nth-of-type(3){
background-color: rgba(246, 220, 39, 1);
border: 2px solid rgba(246, 220, 39, 1);
color: black;
}

.mapboxgl-popup-content .pu_chart{
width: 260px;
height: 150px;
margin-bottom: 0px;
position: relative;
border: 1px solid rgb(176, 176, 176);
/*background:repeating-linear-gradient(
to bottom,
#c7c8ca,
#c7c8ca 0.75%,
transparent 0.75%,
transparent 16%
);*/
}
.mapboxgl-popup-content .pu_chart:before{
content: ”;
width: 100%;
height: 1px;
background-color:rgb(176, 176, 176);
position: absolute;
top: 50%;
}
.mapboxgl-popup-content .pu_chart:after{
content: ”;
height: 100%;
width: 1px;
background-color:rgb(176, 176, 176);
position: absolute;
left: 50%;
}
.chart_point{
position: absolute;
transform: translateX(-100%);
width: 7px;
height: 7px;
background-color: #3393d9;
border-radius: 100%;
opacity: 0.25;
}
.chart_point.exceptional{
background-color: #dbc31e;
}
.chart_point.selectedSchool{
width: 10px;
height: 10px;
z-index: 10;
opacity: 1;
border: 1px solid white;
}
.chart_point span{
width: 200px;
position: absolute;
opacity: 1;
text-align: center;
line-height: 1em;
transform: translate3d(-50%,-120%,0);
top: 0;
text-shadow: 2px 0 0 #fff, -2px 0 0 #fff, 0 2px 0 #fff, 0 -2px 0 #fff, 1px 1px #fff, -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff;
display: none;
}
.chart_point:hover{
opacity: 1;
cursor: pointer;
z-index: 20;
}
.chart_point:hover span {
display: block;
}
.chart_label{
font-size: 0.9em;
}
.chart_label.label_x{
margin-top: 5px;
margin-bottom: 10px;
width: 260px;
}
.chart_label.label_x span:last-of-type {
float: right;
}
.chart_label.label_y {
width: 100%;
height: 150px;
display: flex;
flex-direction: column;
justify-content: space-between;
pointer-events: none;
position: absolute;
text-align: right;
}
.chart_label.label_y{
padding-right: 5px;
}
.chart_label.label_y span:first-of-type {
transform: translateY(-100%);
}
.chart_label.label_y2 span{
position: absolute;
transform: rotate(90deg);
width: 150px;
text-align: center;
top: 0px;
bottom: 0px;
right: -24px;
pointer-events: none;
}
#redline{
width: 100%;
position: absolute;
top: 50%;
left: 0px;
right: 0px;
height: 2px;
background-color: red;
transform: rotate(22.5deg);
}
.svg_redline{
position: absolute;
}
.svg_redline path{
stroke: red;
stroke-width: 2px;
}
.mapboxgl-popup-content table{
width: 100%;
text-align: left;
border-collapse: collapse;
margin-bottom: 1rem;
display: none;
}
.mapboxgl-popup-content table tr:last-of-type td {
border: 1px solid black;
border-collapse: collapse;
}
.mapboxgl-popup-content table th,
.mapboxgl-popup-content table td {
padding: 2px 7px;
}
.mapboxgl-popup-content table th {
font-weight: 400;
padding-bottom: 0px;
}
.mapboxgl-popup-content table td {
font-weight: 900;
}
.mapboxgl-popup-content a {
color: black;
}

#t74_attribution{
position: fixed;
bottom: 0px;
right: 0px;
background-image: url(‘https://www.the74million.org/wp-content/themes/T74v2/images/t74-logo-white.svg’);
background-size: contain;
background-repeat: no-repeat;
background-position: bottom right;
opacity: 0.8;
width: 100px;
height: 20px;
z-index: 300;
margin: 10px;
}
#title-card{
display: flex;
top: 0px;
justify-content: center; /* Centers horizontally */
align-items: center; /* Centers vertically */
width: 100vw;
height: 100vh;
background-color: rgba(3, 32, 46, 0.74);
position: fixed;
text-align: center;
z-index: 100;
transition: all 0.75s linear;
}
body.title_lifted #title-card{
transform: translateY(100vh);
opacity: 0;
}
#title-card > div{
width: 90vw;
max-width: 700px;
color: white;
}
#title-card h1{
font-family: ‘Poppins’;
font-weight: 700;
font-size: 2.25rem;
line-height: 1.25em;
color: white;
margin: 10px auto;
}
#title-card h2{
font-weight: normal;
font-size: 1.125rem;
max-width: 500px;
margin: 0px auto;
display: none;
}
#title-card > div span{
font-family: sans-serif;
font-weight: bold;
font-size: 0.75rem;
margin: 1.5rem auto;
}
#title-card > div span a {
text-transform: uppercase;
background-color: #f1d61e;
color: black;
padding: 5px 13px;
border-radius: 18px;
text-decoration: none;
}
#title-card > div span a:hover{
background-color: #3b7cd1;
color: white;
}
#title-card > div span:last-of-type {
display: none;
}
#title-logo{
width: 7rem;
}
.loader {
width: 40px;
aspect-ratio: 4;
–_g: no-repeat radial-gradient(circle closest-side,#000 90%,#0000);
background:
var(–_g) 0% 50%,
var(–_g) 50% 50%,
var(–_g) 100% 50%;
background-size: calc(100%/3) 100%;
animation: l7 1s infinite linear;
filter: invert(1);
margin: 0px auto;
}
@keyframes l7 {
33%{background-size:calc(100%/3) 0% ,calc(100%/3) 100%,calc(100%/3) 100%}
50%{background-size:calc(100%/3) 100%,calc(100%/3) 0% ,calc(100%/3) 100%}
66%{background-size:calc(100%/3) 100%,calc(100%/3) 100%,calc(100%/3) 0% }
}
#features{
position: fixed;
}
body.map_features_loaded .loader{
opacity: 0;
}
body.map_features_loaded #title-card > div span:first-of-type{
display: none;
}
body.map_features_loaded #title-card > div span:last-of-type {
display: block;
}
#about_this_map{
width: 100vw;
height: 100vh;
/*background-color: rgba(74, 74, 74, 0.78);*/
overflow: scroll;
z-index: 500;
position: fixed;
transform: translateY(100%);
transition: transform 0.5s linear;
}
body.show_about #about_this_map{
transform: translateY(0);
}
.about_container,
#helper{
font-family: ‘Tiempos’, serif;
font-size: 0.9rem;
line-height: 1.5em;
width: 90vw;
max-width: 600px;
background-color: #064260;
color: white;
margin: 20vh auto 20vh 20px;
padding: 5vh;
border-radius: 20px;
}
.about_container h3 {
font-family: ‘Poppins’;
font-weight: 500;
color: #f9de4f;
}
.about_container a {
color: white;
text-decoration: underline;
}
#about_bg{
height: 800%;
position: fixed;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
background-color: rgba(45, 45, 45, 0.6);
z-index: -1;
pointer-events: none;
opacity: 0;
transition: opacity 0.25s linear 0.5s;
}
body.show_about #about_bg{
pointer-events: all;
opacity: 1;
}
#helper{
font-family: ‘Tiempos’;
box-sizing: border-box;
transform: translateX(-120%) translateY(-100%);
transition: transform 0.25s linear 0.75s;
z-index: 501;
display: block;
position: fixed;
top: 50%;
}
body.title_lifted #helper{
transform: translateX(0) translateY(-100%);
}
#helper p > a{
color: white;
}
#helper span a {
text-decoration: none;
width: 20px;
height: 20px;
}
body.title_lifted #helper.closed,
body.show_about #helper{
transform: translateX(-120%) translateY(-100%);
transition-delay: 0s;
}
.close {
position: absolute;
right: 20px;
top: 15px;
width: 100%;
height: 100%;
opacity: 0.75;
}
.close:hover {
opacity: 1;
}
.close:before, .close:after {
position: absolute;
left: 9px;
content: ‘ ‘;
height: 20px;
width: 2px;
background-color: #ffffff;
}
.close:before {
transform: rotate(45deg);
}
.close:after {
transform: rotate(-45deg);
}
.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{
background-image: none;
cursor: pointer;
}
.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon::after {
content: ‘☉’;
font-size: 20px;
line-height: 30px;
}
.mapboxgl-popup-content h5,
.mapboxgl-popup-content .pu_chart,
.chart_label.label_x{
display: none;
}
/* Up to 1024px */
@media only screen and (max-width: 1024px) {
html{
font-size: 18px;
}
.mapboxgl-ctrl-attrib.mapboxgl-compact{
display: none;
}
#map_header h1{
justify-content: flex-start;
margin-left: 20px;
font-size: 1.25rem;
padding-top: 5px;
}
#map_info{
width: 100%;
}
#right_map_nav{
text-align: right;
justify-content: unset;
position: fixed;
right: 0;
top: -3px;
transform: translateY(150%);
height: 40px;
background-color: #064260;
padding: 0px 0px 0px 10px;
}
#right_map_nav li:first-of-type{
float: left;
}
#right_map_nav li:first-of-type:after{
display: none;
}
.mapboxgl-ctrl-top-right .mapboxgl-ctrl{
margin-right: 20px;
}

}
@media only screen and (max-width: 767px) {
html{
font-size: 15px;
}
.mapboxgl-ctrl-right{
display: none;
}
.about_container {
max-width: calc(80vw – 40px);
line-height: 1.7em;
}
body.show_about li.key_item{
opacity: 0;
}

}
]]>

Click on the yellow dots to see the details for each Bright Spot school. Click anywhere in the map to close the data box. (Map: Eamonn Fitzmaurice/The74)

Click to view fully interactive map at The 74.

All serve a high concentration of low-income students, with 66% to 92% of children qualifying for free- or reduced-price lunch. And yet, 90% to 97% of their third graders were proficient readers in 2024, the year of our analysis. In comparison, the proficiency rate for all third graders across the state was just 43%. 

RelatedThese Schools Are Beating the Odds in Teaching Kids to Read

The highest-scoring school by our metric was the Success Academy Bronx 5 Upper Elementary School. In 2024, despite a 90% poverty rate, 94% of its students scored proficient in third grade reading. In 2025, its students did even better, with 96% scoring proficient in reading and 100% doing so in math.

In fact, Success Academy has 21 of its schools on our Bright Spots list. The Icahn charter network has five, South Bronx Classical has three, and both KIPP and the Zeta Harlem Children’s Zone network have two.  

But even beyond charters, it is clear that families with young children in New York City in particular are blessed with a variety of good options. Of the 143 exceptional schools across the state, 97% — 138 — are in the city, and 84 of those are traditional district schools. 

As one example, in 2024, Jacqueline Kennedy Onassis elementary (PS 66) had 81% of its students qualify for free- or reduced-price lunch, yet 84% of its third graders read proficiently. It also did even better in 2025, with 71% of students with disabilities, 84% of Hispanic students and 87% of all students scoring proficiently. These rates all far surpassed the statewide average.

These stats may be heartening, but New York City might soon be able to provide even better options for families.

RelatedBright Spots – US Literacy Map

As a district, the city is in the midst of sweeping changes to how literacy is taught. That initiative, called New York City Reads, requires schools to use one of three phonics-based reading programs with a track record of producing student gains. As that program continues to roll out, participating schools saw large gains last year, and incoming Schools Chancellor Kamar Samuels promised to double down and make teaching vulnerable students how to read his “No. 1 goal.”

These are promising signs of progress. On the charter school front, it bears noting that there’s a cap on how many can operate in New York City, and as the maximum has already been reached, no new ones can open until that cap is lifted. According to the advocacy group StudentsFirstNY, 163,000 New York City students are on charter wait lists. New Mayor Zohran Mamdani has opposed charter schools’ expansion in the past, but he may need to reconsider, given their prominence among the ranks of Bright Spot schools.

Did you use this article in your work?

We’d love to hear how The 74’s reporting is helping educators, researchers, and policymakers. Tell us how