ForHosting KIT · Text & AI

ROT47 encoder/decoder

«Hello» becomes «w6==@»: each printable ASCII character shifts 47 places around a circle of 94, and running the result through again restores the original. Spaces, accents and other alphabets are left alone. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Text
Hello
You get
Result
w6==@

ROT47 rotates printable ASCII characters by 47 positions mod 94. Search intent: rot47 decoder encoder. No network calls, no random seeds, and no server state are required for a correct answer.

How the rotation works

ROT47 works on the 94 printable ASCII characters, the range from 33 to 126 that holds the unaccented Latin letters, the digits and the common punctuation marks. Picture them arranged in a circle. Each character in your text moves 47 places forward around that circle, wrapping back to the start when it passes the end. That is why letters often turn into digits or symbols: in «Hello», H lands on w, e on 6, each l on the equals sign and o on @. The shift is always the same, so there is nothing to configure and no key to remember.

Why encoding and decoding are the same step

Because 47 is exactly half of 94, moving a character 47 places twice takes it all the way around the circle and back to where it started. So ROT47 is its own inverse: the same operation encodes plain text and decodes encoded text, and running it twice always returns the original. Characters outside the printable ASCII range are never touched. Spaces, line breaks, accented letters, other alphabets and emoji pass through unchanged, which keeps the layout of your text intact. The result is computed with no network calls and nothing random, so the same input always gives the same output.

How it works

ROT47 rotates printable ASCII characters by 47 positions mod 94. Involutive on the 33–126 range; other code units are unchanged. The implementation is pure JavaScript with no external services.

No network calls, no random seeds, and no server state are required for a correct answer. Failed jobs are not billed. Landings target the stated search intent with precise keywords.

Prefer explicit units and ranges over silent coercion of bad types. When a field is optional, defaults are documented in params and echoed in the output. This

When to use it

Use this when your search intent matches the calculator name and you need a reproducible answer for teaching, finance ops, GIS, text tooling, or unit history work. ROT47 rotates printable ASCII characters by 47 positions mod 94. No network calls, no random seeds, and no server state are required for a correct answer.

Failed jobs are not billed. Landings target the stated search intent with precise keywords. Prefer explicit units and ranges over silent coercion of bad types.

When a field is optional, defaults are documented

Does it call the network?

No. All math and text transforms are local and deterministic.

How do I decode ROT47 text?

Paste the encoded text and run the same tool again. ROT47 is its own inverse: shifting by 47 twice moves each character a full turn around the 94, so «w6==@» comes back as «Hello».

Which characters does ROT47 change?

Only the printable ASCII characters from 33 to 126: unaccented Latin letters, digits and common punctuation. Spaces, accented letters, other alphabets and emoji stay exactly as they are.

Can anyone decode ROT47 text?

Yes. The shift is always 47 and there is no key or password, so anyone who runs the text through ROT47 again gets the original back. Keep that in mind before using it on anything private.

Does ROT47 change the length of my text?

No. Each character is replaced by exactly one other character or left alone, so the encoded text has the same number of characters as the original, with spaces and line breaks in the same places.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/text/rot47

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/text/rot47 \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello!"}'
{
  "text": "Hello!"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.rot47",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation,

How it works

The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.

Inputs, limits and rounding

Optional decimals use half-up once. No network calls, no random seeds, and no server state are required for a correct answer. Failed jobs are not billed. Landings target the stated search intent with precise keywords. Prefer explicit units and ranges over silent coercion of bad types. When Provide the required parameters as JSON numbers or strings as documented. Invalid types, missing required fields, or out-of-range values raise invalid_input with a clear message. Outputs echo key inputs so automation can log the full context of each call. The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.

When to use it

The calculator is free in the browser, deterministic, and identical in the API path. Inputs are validated before any arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE results when decimals are requested. Use the same JSON contract from spreadsheets, CMS hooks, automation, or teaching demos.

Quick check

Paste values in the free widget and compare with a spreadsheet.

Automation

Call the API with the same JSON contract from n8n, scripts, or CMS.

Teaching

Show the formula and pinned golden examples without proprietary software.

Is it free in the browser?

Yes. Tier A runs fully client-side with the same core as the API.

What happens on bad input?

The handler throws invalid_input; failed jobs are not billed.

Can I use it from the API?

Yes. Send the same JSON fields documented in params.

Who authors this?

Aspire (elon@forhosting.com), EN-only delivery; Nitro hydrates locales.

Read the full KIT documentation →