PasteSheet icon PasteSheet logo mark — a spreadsheet grid with a curly brace on a green rounded square PasteSheet

Run your i18n strings from a Google Sheet

A spreadsheet is where translation actually happens: one row per key, one column per locale, and a grid your translators can read at a glance. PasteSheet publishes that sheet as a live, cached JSON API, so your app pulls localized strings straight from cells and non-developers ship copy in a new language without touching the codebase or a deploy.

Last updated

Key facts

  • One locale is one column, and a Google Sheet allows 18,278 columns (within a 10 million cell ceiling) — you will run out of languages long before you run out of room. source
  • The strings tab holds up to 500 keys on Free and 5,000 on Starter ($9/mo); Pro ($19/mo) removes the row cap for a large bundle.
  • The endpoint is read-only: translators edit in Google Sheets, and the app that reads the strings can never write one back.

Why localize from a Sheet

i18n is a table by nature: a key column and a column per locale. A spreadsheet shows the whole matrix at once, so a translator can see the English source next to the French cell they are filling in, and a missing translation is an obvious blank. Hand-editing JSON or PO files, by contrast, is a job only developers can do.

PasteSheet serves that grid as clean JSON over a fast, cached endpoint. Your app fetches the strings for a locale and renders them; translators just edit cells in Google Sheets. Add a column, add a language — no schema change, no migration, no release to get new copy in front of users.

How to structure the sheet

One tab, one row per string key, one column per locale:

  • A key column — the stable identifier your app looks up, like checkout.title.
  • A column per locale — en, es, fr, de — holding the translated copy.
  • Optional context or notes columns to brief translators without leaving the sheet.
  • Fetch one key at a time, or pull the whole tab and cache it as your locale bundle.

Fetch translations as JSON

Point your app at the endpoint and read the strings. Filter to one key, or pull them all and build a locale map:

terminal
curl "https://pastesheet.com/your-endpoint/Strings?key=checkout.title"

{
  "data": [
    {
      "key": "checkout.title",
      "en": "Checkout",
      "es": "Pagar",
      "fr": "Commander",
      "de": "Zur Kasse"
    }
  ]
}

Read-only, so it is safe to hand to translators

Because the endpoint is read-only by design, it is safe to expose publicly or hand to a teammate: consumers can read and query the data but can never change the sheet. And there is no Google Cloud project, OAuth screen, or service account to set up — you paste a share URL and get a live API.

What it costs

Starter

For indie makers shipping a real app.

$9 /mo
Endpoints
10
Requests / mo
50,000
Row cap
5,000
  • Custom cache TTL
  • Type-mapped columns
  • Private endpoints & keys

Start on Starter ($9/mo) for a custom cache TTL, so a corrected translation reaches users in seconds instead of minutes. Free works to prototype with a 5-minute cache; paid plans add private endpoints and keys when your copy should not be public.

Frequently asked questions

Do translators need a PasteSheet account?

No. Only you, the owner, connect the sheet once. Translators just use Google Sheets — anyone you share the sheet with can edit copy, and the API reflects their changes after the cache refreshes.

How do I add a new language?

Add a column for the locale and fill it in. There is no schema to migrate and no code to change — the new locale appears in the JSON as soon as the cache refreshes.

Can I fetch just one locale?

Each row returns every locale column, so you filter by key rather than by language and read the column you need. Pull the whole tab once and cache it as your locale bundle for speed.

Can anyone change my strings via the API?

No. PasteSheet is read-only by design. The endpoint only serves the translations — there is no write path — so it is safe to expose to a client app or a public site.

Sources

Related use cases

Turn your sheet into an API in minutes

Paste a Google Sheet URL and get a live REST API and MCP server — no backend, no code, free to start.