How we read these calendars
What we do, what we refuse to do, and the three places this method fails. Written so that you can check us rather than take our word for it.
Where the dates come from
School districts do not each build a website from scratch. A handful of platforms run most of them, and those platforms keep the district’s calendar in a structured form — the same data the district’s own calendar page draws when a parent opens it. That is what we read: each district’s own calendar data, as the service behind its calendar page hands it out — for the districts on this site, Apptegy’s calendar service, Edlio, WordPress with The Events Calendar and the district’s own PDF calendar.
Of the 997 districts we publish for 2026–2027, 808 run on Apptegy, 157 run on Edlio, 24 run on WordPress and 8 run on PDF calendars. We do not read another calendar site, a PDF is read only as described below, and no date is ever taken from an archived copy: an archived copy of a district’s home page is used only to find where its calendar lives. If a district’s calendar stops answering, its page keeps the dates from the last read and says when that read was — every district page names the day its calendar was read. If the district empties its calendar instead, the page comes down at the next build.
Across those districts we currently hold 27,734 dated entries for the 2026–2027 school year, spread over Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Virginia, Washington, West Virginia, Wisconsin and Wyoming.
We keep a list of every district in the 47 states we cover, and it runs to 7,556. Of those, 3,054 have a calendar a machine can read — on Apptegy, Finalsite, Edlio, WordPress or a public Google Calendar — and we publish 997 of them.
The rest of those 2,057 are not one problem but three. In 998 of them the platform answers, the feed is valid, and there is nothing in it for this school year — the district keeps its dates somewhere else, usually a PDF poster. A further 483 we read but did not publish: 310 post too few dates for 2026–2027 to answer a question with, and 173 were set aside by our checks — a second copy of a calendar we already publish, a calendar claimed by two districts, a calendar that is not the district’s own — a teachers’ union’s, a city’s or a different school district’s —, an entry we could not tie to a district in our list, or dates that did not hold together. And 576 publish their calendar through a feed whose host asks automated readers to stay away, in the robots.txt file every site can carry. We honor that request, so their dates are not on this site, even where the feed itself would answer.
That leaves 4,502 districts without a calendar we could read. Of those, 2,095 could not be reached, or refused our reader, at the address in our list; the same addresses often answer normally from elsewhere, so that figure is a fact about us rather than about them. Another 947 answered, but we found no calendar on them that a machine can read — most publish the school year as a PDF poster. And 1,460 have no website address in our list yet.
The gap is not oversight, which is why the number of districts here grows by adding states rather than by squeezing the ones we already read.
PDF calendars: which we read, and how
A large share of districts publish the school year as a designed PDF poster. Some of the largest keep a calendar feed too, but close it to automated readers, while the PDF their calendar page links to stays open. A poster is readable by a person and close to unreadable by a machine where the dates are only a grid of colored boxes: there is no reliable way to tell a closure from a decoration without guessing.
So we read a PDF only where the district writes its dates out as text — a list of important dates, or a line under a month — and only those lines; a date shown only as a colored square is not read. Each such PDF is read twice, by independent methods: once from its text, line by line, and once from the printed page as an image. A date goes on the site only when both readings give the same days, and the district page names the PDF. That is eight districts on this site. Districts whose PDF carries its main dates only in color are still absent: we would rather cover fewer districts correctly than more districts approximately, and this is the single biggest gap in our coverage.
What we do to the data, in three steps
We merge duplicates. A district usually keeps one calendar for the district and one for each school, and the same closure appears on several of them, sometimes worded differently. Left alone this produces three rows saying the same thing. We group entries that describe the same kind of day and overlap in time, and keep the widest span.
We join breaks split by a weekend. Districts frequently post two weeks at Christmas as two entries, because the platform stores the weekdays and drops the weekend between them. To a family that is one break, not two, so we join spans separated only by days on which no school was running anyway.
We label each date by type. Break, holiday, staff day, early release, term milestone. The label drives the color on the calendar and the grouping in the tables, and it is derived from the district’s own wording by rule. Because rules over other people’s words are fallible, every row on every page keeps the district’s exact text beside our label so you can see what we worked from.
The hardest part of labeling, and why
Districts write about their own year in a private shorthand. “Last Day of School — First Semester” is December, and it does not mean the year is over. “First Day, Second Nine Weeks” is October, and it does not mean school is starting. The same words, with a different qualifier, mean opposite things three months apart. Getting these wrong puts a wrong headline on the page, so the rules that read them are the part of this site we test hardest.
The labels we use, and what each one means
Every date our rules can place gets exactly one label. The list is short on purpose: a taxonomy a parent cannot hold in their head is no use to them, and a longer one would mean more chances to be wrong.
School break. A block of days when schools are closed to everyone: fall break, Thanksgiving, the Christmas closure, a February break, spring break. Where a district splits one of these across two entries, we join them. A fall break is a closure the district calls fall or autumn break, or, under any name, a closure for all students of three or more school days in a row starting between September 15 and November 15, outside Thanksgiving week; Columbus Day, Veterans Day and Election Day do not count toward the three. A Friday and a Monday off are two days off, not a fall break.
Holiday, no school. A public holiday the district observes, or a day the district simply calls a student holiday. Labor Day, Martin Luther King Jr. Day, Presidents Day, Memorial Day, Juneteenth, and the district’s own closures that carry no other explanation.
Staff day, no students. Teacher work days, pre-planning and post-planning, professional learning days, in-service days. The building is open and your child is not in it. We treat these as closures for the purpose of counting days at home, because that is what they are to a family.
Early release. School runs but finishes early: half days, early dismissals. Not a closure, and counted separately, because it needs cover for part of a day rather than all of it.
Term milestone. First and last day of school, the ends of semesters and quarters, report cards, graduation, testing windows. These change nothing about childcare but set the shape of the year, and the first and last day are the two most-asked dates in the category.
One label we deliberately do not have is “other”. An entry our rules cannot place gets no label of ours: it is shown in the district’s own words, in the muted color of term milestones, and it is never counted as a day off. On this site that is 4,417 of the 27,734 entries — registrations, orientations, school events — and they are where the next rule comes from.
What “school days” means
Weekdays only. A break that runs Monday to Friday is five school days; the weekends either side are not counted. The days off in a year are the weekdays a district marks as a break, a holiday or a staff day, each day counted once, and only between the first and the last day for students. An entry for one school or one grade does not count as a day off for the district.
How a holiday is counted
On the pages for one holiday, a district counts as closed when its own calendar marks the day, or a break that covers it, as a day with no school for the whole district. It counts as open only when its calendar shows school that day. For a date that had passed before we read the calendar, that takes an entry on the day itself — an early release, an exam, the start of a term — because past entries drop out of the feeds we read. For a later date, it takes a calendar that publishes its public holidays, with the first and last day of school around the date, other entries within two weeks either side, and nothing on the day that says it is closed. Everything else is listed as not in the calendar we read and left out of the shares, and a district whose school year has not started or has already ended on that date is not counted.
Partial calendars, and what search engines see
A district page is marked as a partial calendar until the district’s published dates include winter break, spring break, a first or last day for students, and dates through April; until then the page says what we did not find in the calendar we read and makes no claim about the whole year. A partial calendar is in search results only when its dates run through April and it lacks just one of winter break, spring break, or both the first and last day of school; shorter calendars are kept out. A state page for one break is in search results when at least eight of the districts we read in that state list that break, or when we read at least 25 of the state’s districts — then the page opens with how many of them list it. A state’s own page is in search results once we read at least five of its districts.
On reading other people’s pages
We read the calendars public school districts publish. The reading is started by hand, not by a timer; each server gets one request at a time with a pause between requests; a calendar already read that day is not asked for again; a feed whose server asks automated readers to stay away in its robots.txt is not read at all; and every request names this site and its contact address. Dates are facts and facts are not copyrightable; we do not reproduce district page layouts, artwork or documents, and every district page links to the district’s website. A district that would rather not be read can say so at hello@schooldates.org and we will stop reading it.
What we refuse to do
We do not project. The usual way to fill a gap in this category is to take last year’s calendar, move every date forward by the right number of days, and publish the result with the word “projected” somewhere on the page. It is not dishonest exactly, and it fills a page nicely, and it is why so many school calendar listings are confidently wrong.
The problem is that a projected date and a real one look identical to a parent booking a flight. A district that moved its spring break by a week this year will be reported by a projecting site as taking last year’s week, and nothing on the page tells the reader which kind of date they are looking at. Where we have no date, our page says we have no date.
Where this method fails
Past dates go missing. The platforms serve upcoming events. A date that has already passed can drop out of the feed. A date we read before it passed stays on the page when a later read no longer lists it, unless the district has since put other wording on that day; the page then names both days we read the calendar. A date that had passed before our first read we cannot recover. That is one reason the first day of the 2026–2027 year is missing for 159 of the 997 districts on this site; some districts never publish it at all.
Amendments arrive late. Boards change calendars during the year, most often to add make-up days after weather closures. We see the change on the next read, not the day it is made. A page built before an amendment will be wrong until the next build, and the snapshot date is how you tell.
Labels can be wrong. A district that names a day unusually can be labeled wrongly by rules that have not seen that phrasing before. This is the failure we most want reported, because one strange phrasing usually means a whole district is mislabeled, and fixing the rule fixes every page at once.
What a snapshot date means
Every page carries the date of the read it was built from; a district page that keeps past dates from an earlier read carries both dates. It is not the date we launched, not the date the district approved its calendar, and not the date you are reading. It answers one question: how long ago did anyone actually look? If that date is months old, treat the page as months old.
How to check us
Every district page lists its sources: the district’s website and the feed or PDF we read and, for 972 of the 997 districts on this site, the district’s own calendar page, listed first as “District’s calendar” and marked “the source”. Every row keeps the district’s own wording. Open the district page, find the date, and compare. If they disagree, the district is right and we want to know: write to hello@schooldates.org with the district name. What we have corrected so far, and which rule changed, is on the corrections page.
Questions about how this site works
Do you ever estimate a date?
No. Where we have no date, the page says so. Estimating is the one thing that separates this site from the rest of the category, and it is not a feature we are holding back.
How often do you re-read the calendars?
Not on a schedule. We re-read by hand; each district page carries the date its calendar was read.
What if a date here is wrong?
Send the district name to the address on our contact page. We check against the district’s own page, and if we are wrong we fix the reader, not just the page.