Converters
JSON to String Converter
Turn a JSON document into a complete, ready-to-paste string literal for the language you're actually writing — quotes and delimiters included, not just an escaped body.
In short
Convert JSON to a string literal online for JavaScript, Python, Java, C#, Go, SQL or PowerShell — quotes, backslashes and newlines escaped by that language's rules.
By NaveenKumar T · Updated
- Instant in-browser conversion
- Validates input first
- Eight language quote rules
Runs entirely in your browser — nothing you paste or open here is uploaded, logged, or stored.How we handle data →
Example
JSON to String: input and output
A feature-flag definition with a nested object, an array, accented characters and a value that already contains escaped quotes — converted to a Python string literal at two-space indentation.
{
"flag": "new-checkout",
"enabled": true,
"rollout": { "percent": 25, "regions": ["eu-west-1", "us-east-1"] },
"owner": "Zoë Marín",
"description": "Say \"yes\" to the new flow"
}'{\n "flag": "new-checkout",\n "enabled": true,\n "rollout": {\n "percent": 25,\n "regions": [\n "eu-west-1",\n "us-east-1"\n ]\n },\n "owner": "Zoë Marín",\n "description": "Say \\"yes\\" to the new flow"\n}'The whole literal is wrapped in single quotes; every line break of the two-space layout became a \n escape, and the quotes already escaped once in the source (\"yes\") now carry a doubled backslash (\\\"yes\\\"), while Zoë Marín's accented characters passed through untouched — Python single-quote mode has no reason to escape a double quote.
Learn more
How JSON to String conversion works
A string LITERAL is source code — the delimiters, the escapes, and every character in between, ready to paste directly into a .js, .py, .java, .cs, .go or .sql file and compile or run as-is. This converter serializes your JSON at your chosen indentation, then wraps and escapes that text using the exact quoting rules of the language you pick, and the output always INCLUDES the opening and closing delimiters — unlike the JSON Escape tool, which hands back only the escaped body so you can drop it into a delimiter you already have elsewhere.
The eight modes split into three delimiter families: JavaScript and Java use double quotes with backslash escapes (they differ only in whether non-ASCII becomes \uXXXX); a JS template literal swaps in backticks and only escapes the characters that would break one (`, \, ${); Python, SQL and PowerShell all wrap in single quotes but disagree on what an embedded quote becomes (\' for Python, doubled '' for SQL and PowerShell); and C# verbatim (@"…") and Go raw (`…`) are the two modes that keep REAL line breaks in the output instead of \n escapes, trading that convenience for their own restriction — C# verbatim only needs its own quote doubled, while Go's raw string can't contain a backtick at all.
Every mode re-serializes your JSON first, so the input's original whitespace never matters — a minified and a pretty-printed version of the same document produce the identical literal at a given indent setting, and key order is always preserved exactly as parsed.
When to convert JSON to String
This is the tool for JSON that needs to become CODE, not just escaped text: seeding a test fixture with a JSON literal in Python or Java, hard-coding a default config object as a JavaScript template string, writing a JSON blob into a SQL seed script as a single quoted value for a jsonb column, or building a curl -d body inside a shell script where PowerShell's quoting rules apply. Pick the language your file is actually written in — the output is meant to compile there unmodified, not to be re-escaped again downstream.
Quote rules by language
All eight modes, compared directly — this is the fastest way to answer "why did my output look different from what I expected."
| Mode | Delimiter | Embedded quote | Newline | Non-ASCII | Notes |
|---|---|---|---|---|---|
| JavaScript | "…" | \" | \n | kept as-is | The classic double-quoted literal; JSON.stringify() under the hood |
| JS template literal | `…` | n/a (backtick delimiter) | \n | kept as-is | Only `, \ and ${ need escaping |
| Python | '…' | \' | \n | kept as-is | Matches Python's own repr() convention for JSON-shaped text |
| Java | "…" | \" | \n | \uXXXX | ASCII-safe output, the java-escape convention |
| C# verbatim | @"…" | "" (doubled) | real newline kept | kept as-is | Multi-line JSON stays multi-line in source |
| Go raw | `…` | n/a — cannot contain a backtick | real newline kept | kept as-is | Fails if the JSON text itself contains a backtick |
| SQL | '…' | '' (doubled) | \n | kept as-is | Standard ANSI SQL string-literal escaping |
| PowerShell | '…' | '' (doubled) | \n | kept as-is | PowerShell single-quoted (non-interpolating) string |
Help
Frequently asked questions
Everything you need to know about the JSON to String.
01How is this different from JSON Escape or the JSON Stringify page?
Three pages, three different jobs, and the fastest way to pick the right one is by what you already have and where it needs to go. JSON Escape produces only the escaped BODY of a string — no surrounding quotes — for when you already have delimiters of your own and just need the inside filled in safely. [JSON Stringify Online](/json-stringify-online) reproduces exactly what JavaScript's own JSON.stringify() function does (compact by default, an optional space argument, an unstringify mode) — it's the page for JS-stringify SEMANTICS specifically, in JavaScript. This page is neither: it's a complete, ready-to-paste string LITERAL — quotes included — for eight different languages, built for when the destination isn't JavaScript, or when the destination is JavaScript but you specifically want the finished literal rather than JSON.stringify()'s own compact-by-default behavior.
02Which language mode should I pick, and why do they differ?
Pick the language the literal has to compile or run in — the eight modes exist because eight ecosystems genuinely disagree about how a string is delimited and what an embedded quote becomes inside one, and pasting the wrong mode's output produces a syntax error rather than a warning. JavaScript and Java share the double-quote-plus-backslash family (they differ only on non-ASCII handling); Python, SQL and PowerShell share single quotes but disagree on how to escape an embedded one; C# verbatim and Go raw are the two modes that keep real newlines instead of \n, at the cost of their own restriction (C# only needs "" doubled, Go can't contain a backtick at all). The quote-rules table further down lists all eight side by side.
03Why does the Python output use single quotes and Java double quotes?
Because that's each language's own idiomatic default when a string's content might contain a double quote (which JSON-serialized text always does, since every JSON key and string value is itself double-quoted) — Python's own repr() reaches for single quotes specifically to avoid escaping the double quotes JSON text is full of, while Java has only one string-literal syntax, always double-quoted, so its escapes go the other way instead. Neither choice is arbitrary: it's the form that needs the fewest escapes for JSON-shaped content in that language, which is also why this converter picks the same convention rather than always defaulting to one quote style.
04How do I put JSON in a Go raw string or a C# verbatim string?
Pick the matching mode and paste the output as-is — both are deliberately the two modes that keep real line breaks instead of converting them to \n, which is exactly what makes a multi-line JSON literal readable in the two languages that support raw/verbatim strings. The trade-off differs by language: Go's `…` raw string has no escape mechanism at all, so if your JSON's content happens to contain a literal backtick character this tool refuses the conversion outright and tells you to use the JavaScript form instead, rather than silently producing a string Go can't compile. C#'s @"…" verbatim string is more forgiving — its only special rule is that an embedded " must be written twice (""), which this mode handles automatically.
05Can I recover the original JSON formatting with String to JSON?
Only for the JavaScript mode's output — [String to JSON](/string-to-json) unescapes standard JSON-string backslash sequences, which is exactly what the JavaScript mode produces, but not what Python, SQL, C# verbatim or Go raw mode emit, since those use different escaping and quoting rules entirely. Key order always survives regardless of mode, since escaping never reorders anything; indentation does not, since String to JSON re-serializes at whatever indent you choose there.
Keep working
Related tools
JSON Stringify Online
The exact behavior of JavaScript's JSON.stringify() — compact by default, the space argument, and what the serializer silently drops — plus a mode that reverses it.
JSON Escape
RFC 8259 string escaping both ways — make any text safe inside a JSON string, or decode the backslash soup back to text.
String to JSON
Converters
Python Escape
Turn any text into a Python string literal body — plain UTF-8, ASCII-only with \u/\U escapes, or a bytes literal — and decode repr() output back.
JavaScript Escape
Make any text safe inside a JavaScript string literal — quotes, backslashes, newlines and control characters handled both ways.
XML to String
Converters
Learn the format
Related guides
JSON vs XML: An Honest Comparison
JSON vs XML compared without tribalism: syntax, size, attributes, namespaces, schemas, tooling — and the cases where each format genuinely wins.
2 min readGuide · JSONPretty Print JSON in JavaScript: stringify and Beyond
Master JSON.stringify's third argument: indentation, the replacer, console tricks, circular-reference errors, and displaying pretty JSON in HTML.
2 min read