DEV Community

Task Drop
Task Drop

Posted on

I built a free plain-English dictionary API – no jargon, instant keys

Dictionaries explain hard words with harder words. I got tired of that loop, so I built Plainly — a plain-English dictionary + free API.

Live: https://www.plainly.my.id/?utm_source=devto&utm_medium=launch&utm_campaign=api
Docs: https://www.plainly.my.id/docs

What it does

  • GET /api/define?word=petrichor → plain definition + example + phonetics + confused words
  • No jargon, no circular definitions
  • Shareable pages: /word/<word> with OG cards, prerendered for SEO
  • Word of the Day + archive at /words, plus /confused-words, /medical-terms, /legal-terms
  • Free, no signup to use. API keys are instant + keyless (3/day per IP).

Quick try (JS)

// 1. get a key (no account)
const keyRes = await fetch('https://www.plainly.my.id/api/keys', { method: 'POST' });
const { key } = await keyRes.json();

// 2. define a word
const r = await fetch('https://www.plainly.my.id/api/define?word=petrichor', {
  headers: { Authorization: 'Bearer ' + key }
});
console.log(await r.json());
// → { word, definition: '...in plain English', example: '...', phonetic, ... }
Enter fullscreen mode Exit fullscreen mode

How it's built

  • Single HTML file front-end (no build step), Vercel edge functions
  • Supabase Postgres as definition cache (grows with every lookup)
  • Free Dictionary API as source-of-truth, LLM rewrite to plain English
  • Datamuse for autocomplete + did-you-mean
  • OG images via @vercel/og, sitemap.xml with 300+ /word pages
  • Daily Word-of-Day post to X via cron

Try petrichor, serendipity, idiopathic and tell me where the plain rewrite fails — that's the part I'm iterating hardest on.

Repo notes + feedback welcome. What would make you actually use this over MDN/Wiktionary/Google?

Top comments (0)