DevelopersEnglish Updated
Developer tools
Dyslexia Steps publishes its word lists and reading games as free developer tools: 38 English phonics and sight word lists placed from Pre-K to Grade 3 as CSV and JSON, an MCP server so AI assistants can look them up, and free reading games you can embed on your own site. The code is MIT-licensed on GitHub, the packages are on npm, and the word lists are CC BY 4.0.
Packages
dyslexiasteps-mcpMCP server for AI assistants: phonics and sight word lists placed by grade with sources. Six read-only tools.
npx -y dyslexiasteps-mcpdyslexiasteps-dataThe word lists as JSON and CSV with small helpers: lists and words for a grade. Word lists CC BY 4.0.
npm install dyslexiasteps-dataQuick start
To let an assistant look up the lists, add the hosted MCP server to your client; to use the data in code, install the package. Setup for ChatGPT, Codex, Cursor, VS Code and Gemini CLI is on the MCP server page.
claude mcp add --transport http --scope user dyslexiasteps https://mcp.dyslexiasteps.com/mcp
npm install dyslexiasteps-dataWhat people use them for
Teachers and tutors
Ask an assistant for word lists for a grade and a pattern, such as 20 words with sh for a first grader, and get an answer from sourced lists you can also print.
MCP server and setup for each clientApp makers and researchers
Download the lists as CSV or JSON, or install the npm package, and build reading practice or study how common patterns are spread across grades.
Word lists by grade and downloadsSchools, tutors and bloggers
Put a free reading game on your own site in two lines of HTML, in English, German, Spanish, French, Dutch or Portuguese. See it on a sample page and copy the code.
Embed the gamesParents and schools
Browse and print the lists by grade, each with audio and the source of its placement. They are teaching and practice lists, not an assessment of any child.
Browse the lists by gradeWhere everything lives
| What | Address |
|---|---|
| Developer docs | https://docs.dyslexiasteps.com |
| Docs for AI systems (llms.txt) | https://docs.dyslexiasteps.com/llms.txt |
| Hosted MCP server | https://mcp.dyslexiasteps.com/mcp |
| GitHub organization | https://github.com/Dyslexia-Steps |
| npm: MCP server | https://www.npmjs.com/package/dyslexiasteps-mcp |
| npm: word lists data | https://www.npmjs.com/package/dyslexiasteps-data |
| Embed the games | https://dyslexiasteps.com/embed |
| npm: embeddable games | https://www.npmjs.com/package/dyslexiasteps-embed |
| Data files | https://dyslexiasteps.com/data/word-lists.csv |
What is in the data files
38 English lists with 1,079 different words, placed across five grade levels, plus 282 lists in 5 other languages. The CSV has one row per word; the JSON groups the same data by list and explains each placement basis. Both are downloadable from word lists by grade and ship in the npm package.
| CSV column | Values |
|---|---|
| language | en, de, es, fr, nl, pt-br |
| grade_from, grade_to | Pre-K, Kindergarten, Grade 1, Grade 2 or Grade 3 (empty for lists in other languages) |
| section | cvc, families, sight, digraphs, patterns (English) or wordlist (other languages) |
| list_id, list_title | Stable list id (for example short-a) and its title |
| group | Word family or group inside the list, when the list has one |
| word | The word |
| placement_basis, placement_url | Source of the grade placement: Dolch (1936), a Common Core item or Typical sequence, with a link |
| list_url | The page of the list on dyslexiasteps.com |
| updated | Last update of the list (YYYY-MM-DD) |
Use the lists in code
The same lists in four ways. More examples and the full schema are in the dataset docs.
curl
curl -s https://dyslexiasteps.com/data/word-lists.json | jq '[.lists[] | select(.language=="en" and .gradeFrom=="Kindergarten") | .title]'JavaScript (npm)
import { listsForGrade, wordsForGrade, listById } from "dyslexiasteps-data";
listsForGrade("kindergarten").map((l) => l.title);
wordsForGrade("grade-1").length; // every different word from the lists that cover Grade 1
listById("short-a").basis; // "RF.K.2.d, RF.K.3.b"Python (pandas)
import pandas as pd
df = pd.read_csv("https://dyslexiasteps.com/data/word-lists.csv")
df[(df.language == "en") & (df.grade_from == "Grade 1")].groupby("list_title").word.count()R
df <- read.csv("https://dyslexiasteps.com/data/word-lists.csv")
subset(df, language == "en" & grade_from == "Kindergarten")What the lists are and are not
A grade is a typical guide, not a rule: programs and standards differ, and a placement is not an assessment of any child. Each English list says why it sits where it does: Dolch's own grade levels (public domain), the Common Core Foundational Skills item that names the skill, or a typical sequence when no standard names it. The 282 lists in 5 other languages follow each language's own reading curriculum and have no grade. The free screening test on Dyslexia Steps is a screening, not a diagnosis; only a specialist can diagnose dyslexia. The source of every placement is on word lists by grade.
Developer tools: frequently asked questions
Are the word lists free to use in an app or a worksheet?
Yes. The compilation is licensed CC BY 4.0: credit Dyslexia Steps and link the word lists by grade page. The Dolch words themselves are public domain.
How current is the data?
The files are built from the same content as the pages, so they match what the site shows. Each list carries an update date, and the npm package version changes when lists change or a placement is revised.
Do the lists include audio?
Every English word on the site has audio on its list page. The data files hold the words and their metadata, not the audio.
Are there lists for languages other than English?
Yes: German, Spanish, French, Dutch and Brazilian Portuguese, written for each language's own reading curriculum rather than translated from English. They have no grade placement.