Unicode circled letters
Type Hello123 and get Ⓗⓔⓛⓛⓞ①②③: eight bubble characters that paste as plain text into usernames, stream titles and captions, with no special font. It also turns circled text back into ordinary letters and digits. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Text
- Hello123
- Calculation mode
- Encode
- Result
- Ⓗⓔⓛⓛⓞ①②③
- Mapped count
- 8
- Passthrough count
- 0
- Unmapped count
- 0
Unicode Circled letters and digits look like bold bubbles drawn around each character and travel as ordinary text—no custom webfont required—so people paste them into display names, event badges, stream titles, and social captions. This capability turns plain Latin A through Z, a through z, and digits zero through nine into those circled code points from the Enclosed Alphanumerics block, and converts the same glyphs back to readable ASCII. Encode mode maps each letter and digit with the official circled capital, small-letter, and digit ranges. Decode mode reverses that table so a bubble-styled string becomes ordinary text again for storage, search, or moderation. Characters that are not Latin letters, digits, or known circled glyphs stay in the result and appear in an unmapped list, so mixed emoji or other mathematical styles never vanish silently. Spaces and common punctuation pass through for natural display names and IDs.
How Unicode Circled letter and digit mapping works
Unicode defines Circled Latin letters and digits inside the Enclosed Alphanumerics block. Capital A starts at U+24B6 and runs through capital Z at U+24CF; small a starts at U+24D0 through small z at U+24E9. Circled digits one through nine occupy U+2460 through U+2468, while circled digit zero sits separately at U+24EA—so a correct converter must special-case zero rather than assuming a single contiguous digit range.
Those code points live in the Basic Multilingual Plane, but the implementation still walks the string by Unicode scalar value with codePointAt so surrogate pairs elsewhere in the input never corrupt offsets. Encode mode replaces each plain Latin letter and digit with its circled counterpart while leaving spaces and common ASCII punctuation untouched so a label like Hello World-42 stays readable after styling. Decode mode reads circled characters and writes the corresponding plain letters and digits, leaving already-plain A–Z, a–z, and 0–9 as passthrough so mixed strings still clean up.
Any other symbol—emoji, Greek, mathematical sans-serif or script letters from a different style, parenthesized forms, or unexpected marks—is preserved in the output string and listed once in the unmapped array so callers can warn users or strip leftovers deliberately. Because the style is pure Unicode, the result pastes into chats, documents, and form fields that accept general text without installing a special font file.
When mode is omitted, encode is the default so a single field still produces a useful circled bubble string. Encode treats text as plain content and returns result filled with Circled letters and digits. Decode treats text as circled or mixed content and returns plain Latin and ASCII digits where the table applies.
When at least one unmapped character exists, the response includes an unmapped array of those unique characters in first-seen order; when every character mapped or passed through cleanly, that field is omitted rather than set to null. Fixed labels style and script identify the Circled profile so clients can assert which alphabet they hit. Classic checks include encoding Hello123 to its eight circled glyphs, decoding that string back to Hello123, and encoding a phrase with a space and hyphen to prove passthrough.
Where circled Unicode bubble text conversion earns its keep
Creators who want playful bubble-letter usernames, product stickers, stream titles, or event badges often reach for Unicode Circled characters because they copy as plain text and still read as styled type on most modern devices without a webfont. Community managers generate circled display names for campaigns and need a reversible path so moderation tools can recover the underlying ASCII spelling for keyword filters and ban lists. Product teams building profile editors or coupon code generators can offer a one-click circled preview without shipping a custom font file or canvas renderer.
Support desks paste opaque fancy text from tickets and need unmapped reporting when the user mixed bold serif, fraktur, script, sans-serif, or emoji that this converter deliberately does not rewrite. If you need mathematical sans-serif, cursive script, bold italic, fraktur, double-struck, fullwidth, or regional calligraphy fonts as images, treat those as separate search intents and landings rather than overloading this Circled bubble converter page.
What you can do with it
Bubble display names and event badges
Turn plain A–Z names and digit codes into Unicode Circled bubble letters for social profiles, stream titles, stickers, and badges that paste without a custom font.
Moderation and plain-text recovery
Decode circled usernames and codes back to ASCII for keyword filters, search indexes, and ban lists while listing any leftover unmapped symbols.
FAQ
What are Unicode Circled (bubble) letters?
They are the Unicode Circled Latin letter and digit glyphs for A–Z, a–z, and 0–9—stored as real characters in the Enclosed Alphanumerics block (for example U+24B6 for capital A and U+24EA for digit zero), not as a font effect or image.
How do I convert plain letters and digits to circled bubble text?
Send a non-empty string in text with mode encode (or omit mode). Each Latin letter and digit becomes its Circled counterpart; spaces and common punctuation pass through unchanged.
How do I convert circled characters back to plain text?
Send the styled string with mode decode. Known circled glyphs map to A–Z/a–z/0–9; plain Latin and digits already present stay as-is; other symbols are preserved and listed under unmapped when present.
What does unmapped mean in the response?
Unmapped characters are symbols that are neither transformed Latin letters or digits nor passthrough spaces or common punctuation. They remain in result and appear once each in the unmapped array so you can warn or clean them.
Do I need a special font to show circled letters?
No. Circled letters and digits are standard Unicode characters, so they copy as plain text into chats, documents and online forms and still look styled on most modern devices.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/enc/circled-unicode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello123"}'const res = await fetch("https://api.kit.forhosting.com/enc/circled-unicode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello123"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/circled-unicode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello123"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/circled-unicode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello123"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello123"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/circled-unicode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "Hello123"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.circled_unicode",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
The free browser path and the paid API share one pure deterministic function, so demos and automation always agree on the same transform.
How Unicode Circled letter and digit mapping works
Length is limited to a documented maximum of scalar values so a runaway paste cannot exhaust a Worker isolate.
Input contract, response fields, and error behaviour
POST a JSON object with a required non-empty string field named text and an optional mode set to encode or decode. Aliases such as input, value, data, and s are accepted for text; op, operation, and direction alias mode. Both directions echo mode and the original text, report mapped_count for characters that transformed, passthrough_count for spaces and punctuation that stayed put, unmapped_count for distinct leftover symbols, and length as the scalar count of the result. Missing text, empty strings, non-string objects for text, unsupported mode values, and strings longer than the documented maximum fail with invalid_input and a clear English message; validation failures do not consume prepaid balance. Successful API calls bill the published base of $0.002 per item.
Integration use cases
CI fixtures for styled text pipelines
Generate deterministic encode/decode goldens so profile editors and content pipelines never disagree on Circled bubble round-trips.
Technical questions
What does the unicode circled letters converter cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.