Skip to content

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-mcp

MCP server for AI assistants: phonics and sight word lists placed by grade with sources. Six read-only tools.

npx -y dyslexiasteps-mcp

npmGitHubDocs

dyslexiasteps-data

The word lists as JSON and CSV with small helpers: lists and words for a grade. Word lists CC BY 4.0.

npm install dyslexiasteps-data

npmGitHubDocs

dyslexiasteps-embed

The free reading games as a web component and React wrapper: add a game to a school, tutoring or parenting site in six languages.

npm install dyslexiasteps-embed

npmGitHubDocs

Quick 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-data

What 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 client

App 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 downloads

Schools, 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 games

Parents 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 grade

Where everything lives

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 columnValues
languageen, de, es, fr, nl, pt-br
grade_from, grade_toPre-K, Kindergarten, Grade 1, Grade 2 or Grade 3 (empty for lists in other languages)
sectioncvc, families, sight, digraphs, patterns (English) or wordlist (other languages)
list_id, list_titleStable list id (for example short-a) and its title
groupWord family or group inside the list, when the list has one
wordThe word
placement_basis, placement_urlSource of the grade placement: Dolch (1936), a Common Core item or Typical sequence, with a link
list_urlThe page of the list on dyslexiasteps.com
updatedLast 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.