Menu

Remove Punctuation From Text

Paste your text to remove every punctuation mark at once. Apostrophes (don't) and hyphens (well-known) are kept by default, dashes and slashes become spaces so words never run together, and line breaks stay where they are.

0 words 0 characters 0 lines

Continue with this text: Remove extra spacesLowercaseWord frequency

Your text stays in your browser: nothing is uploaded or stored on a server.

How to remove punctuation

  1. Paste your text into the box, click Open file to load a .txt or .csv file, or click Example to try the sample sentence.
  2. Choose what to keep: Keep apostrophes (don’t) and Keep hyphens (well-known) are ticked by default.
  3. Tick Also remove symbols ($ % + = © …) if currency signs, math signs and other symbols should go too.
  4. The result updates as you type. Click Copy, Download .txt, or Use as input to run another tool on the cleaned text.

With the default settings, the example sentence comes out like this:

Before After
Wait... what?! The "best-ever" deal (50% off) ends today; don't miss it—really. Wait what The best-ever deal 50 off ends today don't miss it really

What counts as punctuation

The tool removes every character that Unicode classifies as punctuation, in any script. That covers the seven punctuation categories of the Unicode Character Database: connectors such as the underscore, dashes and hyphens, opening and closing brackets, opening and closing quotation marks, and “other” punctuation such as . , ; : ! ? % & * @ # / \ ·. Because it uses the Unicode list rather than a fixed set of keyboard characters, it also removes ¿ ¡ « » „ “ ” and the Chinese and Japanese marks 。、「」.

Symbols are a separate Unicode group, so these stay unless you tick Also remove symbols:

Kind Examples
Currency signs $ € £ ¥
Math symbols + = < > | ~ −
Modifier symbols ^ and the backtick
Other symbols © ™ ° ★ ✔ and emoji

Letters, digits, accented letters, spaces, tabs and line breaks are never removed.

The options

Option On (default for the first two) Off
Keep apostrophes don't it’s O'Brien's dont its OBriens
Keep hyphens well-known pages 10-12 wellknown pages 1012
Also remove symbols C++ & C# → C C C++ & C# → C++ C

Keep apostrophes keeps the straight ' and the curly ’ only where they work as apostrophes: between two letters (don't, it’s) or after a final s (students', James'). Single quotation marks use the same characters but sit at the edge of a word, so they are removed: 'quoted' becomes quoted and “curly” ‘single’ becomes curly single. An apostrophe at the start of a word is removed too, so '90s becomes 90s.

Keep hyphens applies to the ordinary keyboard hyphen (-) and to the Unicode hyphen (U+2010) and non-breaking hyphen (U+2011), so co‐op stays co‐op. Dashes are not hyphens and are always handled as described below. A lone hyphen used as a dash (a - b) or a list bullet (- item) is kept too, because the tool cannot tell it apart from a hyphen inside a word.

Also remove symbols deletes the symbol, then reduces the spaces left behind to one again: $20 + 5% = ©2026 becomes 20 5 2026. An emoji goes with its invisible parts (variation selectors, skin tones and the joiners inside sequences such as 👨‍👩‍👧), so nothing invisible is left behind. A symbol at the start or end of a line goes with the space next to it, so ❤️ hi becomes hi and ★ Top pick becomes Top pick.

Dashes, slashes and spacing

Deleting punctuation can glue words together. To prevent that, an em dash (—), en dash (–), slash (/) or ellipsis character (…) between two non-space characters becomes a space. After that, any run of two or more spaces or tabs after the first non-space character of a line is reduced to one space. Line breaks are not touched, so a list stays one item per line.

Before After
yes — no yes no
don't miss it—really don't miss it really
pages 10–12 pages 10 12
and/or and or
Wait…what Wait what
Mr. Smith, Jr. Mr Smith Jr

Spaces left at the start of a line after removed punctuation, or at the end of a line before it, are removed, so « Bonjour » becomes Bonjour and end . becomes end. Indentation at the start of a line is kept as it is: - item, one becomes - item one and \t\tcode(); keeps its two tabs and becomes \t\tcode, so nested lists keep their levels.

Edge cases to check before you copy

Punctuation inside numbers, addresses and code is removed like any other punctuation:

Before After
3.14 314
1,000 1000
10:30 1030
U.S.A. USA
[email protected] infoexamplecom
#hashtag @user hashtag user
**bold** _italic_ bold italic
1. First 1 First

If the text contains prices, times or email addresses you need to keep, pull them out first with extract numbers or extract emails, or remove only specific marks with find and replace. For HTML, use remove HTML tags first: this tool turns </b> into < b>: the slash becomes a space and the angle brackets, which are math symbols, stay.

When people strip punctuation

  • Counting and comparing words. Word lists, frequency counts and keyword research treat today; and today as different words until the punctuation is gone. Clean the text, convert it to lowercase, then run the word frequency counter.
  • Preparing text for code or data. Search indexes, tags and simple text-processing scripts often expect plain words. Keeping apostrophes and hyphens preserves don’t and e-mail as single tokens.
  • Cleaning spreadsheet columns. Names, product titles and survey answers exported from a CRM or form often carry stray quotes, brackets and trailing periods. Paste the column, clean it and paste it back; each line stays a row.
  • Hashtags and file names. Turning a phrase into a hashtag or a simple file name starts with removing commas, quotes and question marks.
  • Checking a translation or transcript. Comparing two versions without punctuation shows whether the words themselves differ.

Removing punctuation in code

The Python idiom text.translate(str.maketrans('', '', string.punctuation)) removes the 32 ASCII characters in string.punctuation. That set differs from this tool’s in two ways: it includes symbols such as $ + < = > ^ | ~, and it misses everything outside ASCII. On the example sentence it keeps the em dash and deletes the apostrophe and hyphen, giving bestever, dont and it—really. To match this tool in a script, use a Unicode-aware pattern such as \p{P} in JavaScript (with the u flag) and handle dashes and apostrophes as described above.

Questions

Does removing punctuation keep apostrophes?

Yes, by default. Keep apostrophes (don't) keeps the straight apostrophe (') and the curly one (’) between two letters or after a final s, so don't, it’s, O'Brien's and students' stay as they are, while single quotation marks around words are removed. Untick it to get dont, its and OBriens.

Why did a dash turn into a space instead of disappearing?

An em dash, en dash, slash or ellipsis between two words is replaced by a space, so really—truly becomes really truly and and/or becomes and or instead of reallytruly and andor. The ordinary hyphen (-) is a different character and is kept or deleted with the Keep hyphens option.

Are $, %, + and © punctuation?

The percent sign is; the others are symbols. The tool follows Unicode, which files $ as a currency sign, + and = as math symbols and © as an "other" symbol, so they stay unless you tick Also remove symbols. For a strict letters-and-digits result, use remove special characters.

How do I remove punctuation from a string in Python?

A common way is text.translate(str.maketrans('', '', string.punctuation)). Note that string.punctuation holds only 32 ASCII characters, so curly quotes, em dashes and ¿ stay, and it also removes symbols such as $, + and | that this tool keeps by default.

Can I remove punctuation from a column in Excel?

Copy the column, paste it here, then copy the result back into Excel. Line breaks are kept, so each cell stays on its own row. Watch numbers such as 1,000 or 3.14, which lose their comma or decimal point.

Does the tool remove accents or emoji?

No. Accented letters (é, ñ, ü) are letters, not punctuation, and emoji are symbols, so both stay. Use remove accents or remove emojis for those.

Is my text uploaded anywhere?

No. The cleaning runs in your browser and the text is never sent to a server.