Logo

MonoCalc

/

Smart Quotes Converter

Text
Auto-detect scans the text for curly characters and picks the sensible direction.
0 characters · 0 lines · 0 B · 0 non-ASCII
Only used when converting straight quotes to smart quotes.
Markdown convention: --- becomes an em dash, -- becomes an en dash.

What to convert

What to protect

Enter or paste some text to convert, or load a sample to see how contractions, nested quotes and code spans are handled.

Character transformation legend

"
"
'
'
--
---
...
5'5′
11"11″

About This Tool

Smart Quotes Converter – Curly and Straight Quotation Marks

The Smart Quotes Converter moves text between two punctuation worlds. In one direction it applies publication-quality typography: straight typewriter marks become directional curly quotes, contractions get a proper apostrophe, double hyphens turn into dashes and three dots become a single ellipsis. In the other direction it flattens smart quotes back to ASCII so pasted rich text stops breaking JSON, YAML, CSV, SQL and source code. Everything runs in your browser, so nothing you paste is ever uploaded.

Why straight and curly quotes both exist

Mechanical typewriters had one key for a vertical quote, so ASCII inherited exactly two ambiguous characters: U+0022 and U+0027. Real typography has always used directional marks instead — a left double quotation mark to open a phrase and a right one to close it. Word processors auto-substitute those directional characters as you type, which is why text copied out of Word, Google Docs, Notion or a CMS carries invisible passengers into places that cannot handle them.

StraightSmartCode pointRole
"U+201COpens a quotation
"U+201DCloses a quotation
'U+2018Opens a nested quotation
'U+2019Apostrophe or closing single quote
--– —U+2013, U+2014En dash and em dash
...U+2026Horizontal ellipsis

How the conversion decides open from close

Naive converters simply alternate: first quote opens, second closes. That fails the moment an apostrophe appears. This tool reads the surrounding characters instead. A quote at the start of the text, after whitespace, or after an opening bracket or dash becomes an opening mark; anywhere else it becomes a closing mark. Apostrophes are resolved before quotes are even considered, using three rules:

contraction   letter + ' + letter      it's, don't, we're
possessive    ...s + ' + non-word     the girls' team
elision       start + ' + word/digit  'tis, '90s, rock 'n' roll

Every one of those cases produces a right single quote, never a left one — the single most common mistake in hand-typed typography. Nested phrases are paired independently, so "He whispered 'run'" comes out with curly doubles outside and curly singles inside.

Flattening smart quotes for code and data

Going the other way is a direct code-point mapping. Curly doubles, low-9 quotes, guillemets, full-width marks and double primes all collapse to "; curly singles, primes and modifier apostrophes collapse to '; dashes become hyphens; the ellipsis becomes three dots; and no-break spaces become ordinary spaces. Turn on JSON-safe escaping and every double quote produced by the conversion is emitted as \", so a curly quote sitting inside a JSON string value no longer terminates it.

Round trips are not always lossless
An em dash and an en dash both flatten toward hyphens, and an apostrophe is the same character as a closing single quote. Converting smart to straight and back will not always restore the original document exactly — the tool flags this whenever it detects mixed dash types.

Protected regions, primes and locales

Prose and code usually live in the same document, so fenced code blocks, inline backticks, <pre> and <code> bodies, HTML attribute values and URLs are masked before any conversion runs and restored byte-for-byte afterwards. Turn on prime marks and a quote following a digit becomes a true prime instead: 5' 11" renders as 5′ 11″, which is the correct notation for feet, inches, minutes, seconds and coordinates.

Quotation conventions are not universal. German writing opens low and closes high, French uses guillemets separated by a narrow no-break space, Swedish repeats the same right-hand mark at both ends, and Japanese uses corner brackets. Pick a locale and the same contextual logic emits that language’s character set instead of the English default.

Reading the statistics

The report counts every replacement by type, lists each non-ASCII character with its code point and first position, and compares length in three units. Characters, UTF-16 code units and UTF-8 bytes diverge because a curly quote is one character but three bytes, which is exactly why “the same text” grows after smartening and why a byte-limited database column or meta description can suddenly overflow.

Hunting one bad character
When a parser fails on a document that looks fine, paste it in, switch to Smart to Straight and read the non-ASCII inventory. It reports the line and column of every suspect character, and the heat strip under the input shows their distribution across the whole file at a glance.

Frequently Asked Questions

Is the Smart Quotes Converter free?

Yes, Smart Quotes Converter is totally free :)

Can I use the Smart Quotes Converter offline?

Yes, you can install the webapp as PWA.

Is it safe to use Smart Quotes Converter?

Yes, any data related to Smart Quotes Converter only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does the Smart Quotes Converter work?

The tool walks through your text one character at a time, first masking anything it must not touch — code spans, HTML tags and URLs — and then deciding for every quote mark whether it opens a phrase, closes one, or is an apostrophe. Each decision is recorded, so the breakdown table and the side-by-side diff show exactly which characters changed and why.

Why does a curly quote break JSON, CSV or my code?

Parsers only recognise the ASCII characters U+0022 and U+0027 as string delimiters. A left double quotation mark (U+201C) pasted from Word or Google Docs looks almost identical on screen but is a completely different code point, so JSON.parse, a CSV importer or a SQL client treats it as ordinary text and the statement fails. Running Smart to Straight flattens every curly character back to ASCII.

How does the tool know whether an apostrophe opens a quote or is part of a word?

It uses context rather than naive alternation. An apostrophe between two word characters is a contraction, one after an s followed by punctuation is a plural possessive, and a fixed list plus a decade pattern catches word-initial elisions such as 'tis, '90s and rock 'n' roll. All of these take a right single quote, which is what naive converters get backwards.

Which quotation styles are supported?

English, the inverted British convention, German low-high quotes, French guillemets with narrow no-break spaces, Spanish, Swedish, Polish and Japanese corner brackets. The style only applies when converting straight to smart, because flattening always produces plain ASCII regardless of the source language.

Is converting smart quotes back to straight quotes lossless?

Not always. An em dash and an en dash both collapse toward hyphens, and a curly apostrophe and a right single quotation mark are the same character, so the original intent cannot always be recovered. The tool flags a lossy round trip when it detects mixed dash types so you know a second pass will not restore the source exactly.

Is my text uploaded to a server?

No. Every transformation runs in your browser with plain JavaScript string operations, so manuscripts, customer data and API payloads never leave your device. Only your option choices are stored locally so the page remembers them on your next visit.