Bold text
Type Hello world and get **Hello world**, ready to paste wherever Markdown bold is read, from chat apps to project notes. Text that is already wrapped stays as it is, so you never end up with four asterisks. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Text
- Hello world
- Bold
- **Hello world**
- Original
- Hello world
- Length
- 15
Markdown chat apps, README files, and many knowledge-base editors treat a phrase wrapped in a pair of double asterisks as bold. People still type those markers by hand, miss a closing pair, or paste a heading that is already wrapped and end up with four asterisks that render as italics or as literal stars. This bold text helper takes one plain string, rejects empty and whitespace-only input so a blank box never looks like a successful format, and returns the markdown-bold form plus a flag when the source was already wrapped.
What Markdown bold is and how this wrap works
Markdown bold is not a font file and it is not a Unicode letter style. In CommonMark, GitHub Flavored Markdown, Discord, many README previews, and countless static-site generators, a span wrapped in two asterisks on each side is parsed as strong emphasis and rendered as bold. The same convention shows up in chat macros, issue templates, and knowledge-base snippets that authors paste between tools.
This helper exists for that contract: you send a plain string, and you get that string wrapped in a leading pair and a trailing pair of asterisks so the next renderer will show it in bold. It does not map A–Z onto Mathematical Bold Italic code points, it does not emit HTML strong tags, and it does not walk a full Markdown document to find every emphasis node. One string in, one bold-marked string out.
When the trimmed source already begins and ends with double asterisks and the inner span is not empty, the function leaves the existing wrap in place instead of stacking a second pair. Stacking would turn a correct heading into four asterisks, which many parsers treat as italics plus leftover stars or as a broken delimiter run.
Where a Markdown bold wrapper earns its keep
Community managers, support writers, and documentation pipelines need a tiny, predictable way to stamp Markdown bold onto a phrase before it lands in a chat message, a README line, or a ticket template. Failed validation does not consume balance. Keep requests under the published character ceiling, pin the bold string in tests, and you get reproducible markup for chat bots, docs generators, and edge workers without standing up a Markdown parser or a font engine.
Use Unicode Mathematical Bold Italic when you want letters that look bold in places that do not parse Markdown; use this page when the consumer is a Markdown renderer that expects ASCII asterisks. That split of search intent is why a dedicated bold-text landing exists alongside the Unicode stylizer and the generic per-line wrap tool.
What you can do with it
Chat and community macros
Stamp Markdown bold onto a phrase before it is posted to Discord, GitHub, or any chat that renders double asterisks as strong emphasis.
README and docs pipelines
Generate **headings and callouts** from plain titles in a docs build so every line uses the same wrap and never stacks a second pair.
Support snippets and ticket templates
Wrap a product name or status word in bold markup inside canned replies without hand-typing asterisks that go missing on paste.
FAQ
How do I make text bold in Markdown?
Send a non-empty string in the text field.
What happens if I send empty text?
Empty and whitespace-only strings are not a successful format and are not billed.
Does this convert letters to Unicode bold characters?
No. This page emits ASCII Markdown asterisks for renderers that parse **bold**. For Mathematical Bold Italic letters that look styled without Markdown, use the Unicode bold italic converter.
What if my text is already wrapped in double asterisks?
It is left exactly as it is. Adding a second pair would produce four asterisks on each side, which many Markdown readers show as italics with stray stars or as a broken format.
Are spaces at the start or end of my text kept?
No. Leading and trailing spaces are trimmed before the asterisks are added, so the markers wrap only your words. A box that holds nothing but spaces is rejected instead of being bolded.
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/life/bold-text \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello world"}'const res = await fetch("https://api.kit.forhosting.com/life/bold-text", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello world"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/bold-text",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello world"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/bold-text", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello world"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello world"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/bold-text", 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": "Hello world"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.bold_text",
"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.
Limits
max_chars | 100000 |
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
What Markdown bold is and how this wrap works
Empty and whitespace-only strings are rejected so a successful payload never means you bolded nothing.
Input contract, already-wrapped input, and empty-text errors
After the field is present, the engine trims leading and trailing whitespace. Strings longer than one hundred thousand characters are rejected so a paste dump cannot blow the isolate. POST a JSON body with one required field named text: a string of the words you want marked bold. The parser also accepts the aliases input, string, value, content, body, and s so older form posts and SDK wrappers do not have to rename the field. The value must be a string; numbers, objects, arrays, and booleans are rejected with invalid_input that names text. If the result is empty, the task fails with invalid_input and is not billed—empty text is not a successful format. On success the body includes bold, the markdown-wrapped result that clients should copy or store; original, the trimmed source; length, the character count of the bold string; already_wrapped, true only when the source was already a complete double-asterisk pair with a non-empty inner span; and method, always markdown_double_asterisk so you can distinguish this contract from a Unicode stylizer. Example: Hello world becomes a bold field of two asterisks, Hello world, and two asterisks, with already_wrapped false. Sending an already wrapped Ready phrase back through the same path returns that same wrap with already_wrapped true, not a stacked four-asterisk mess. Pair the response with your own preview if you want a rendered bold sample; this endpoint returns markup, not a raster image or a font file.
Where a Markdown bold wrapper earns its keep
Spreadsheet macros and no-code zaps that build Discord-compatible copy can call this endpoint instead of concatenating asterisks in five different recipes that disagree on trim and double-wrap.
Technical questions
What if the text is already wrapped in asterisks?
If the trimmed source already starts and ends with double asterisks and the inner span is not empty, the helper leaves it as-is and sets already_wrapped to true. It will not stack a second pair.
What does the bold text wrapper cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.