How to remove or replace currency symbols in a csv
- Step 1Export the CSV with the amount column — Download from your invoicing tool, payment processor, or store. The dropzone takes
.csv,.tsv,.txtwith auto delimiter detection. - Step 2Strip the currency symbol — Find
£, leave Replace with empty, keep Regex mode OFF (so the symbol is literal). Run. Every£in the file is removed. - Step 3If you have a dollar column, mind the metacharacter — In literal mode (Regex off), Find
$works as a plain dollar sign. Only if you switch Regex on do you need to escape it as\$, because$means end-of-string in a regex. - Step 4Strip thousands commas if your importer needs bare numbers — Re-feed the output and run a second pass: Find
,, Replace with empty. Caution: this strips every comma in the file, including the delimiter-safe ones inside other columns — see the edge cases. - Step 5Run and check the counter — Replacements made is the count of cells changed. It should equal the number of rows that carried the symbol you stripped.
- Step 6Download and import the numeric column — Click Download CSV (saved
<name>.replaced.csv) and load into your database or spreadsheet. Confirm the column is now numeric andSUM()works.
Currency-fix passes
Each row is one pass; re-feed the output to chain them. Watch the Regex column — $ is a metacharacter only when Regex mode is on.
| Goal | Find | Replace with | Regex mode |
|---|---|---|---|
| Strip pound sign | £ | (empty) | Off (literal) |
| Strip dollar sign (literal) | $ | (empty) | Off — literal $ is safe |
| Strip dollar sign (regex) | \$ | (empty) | On — must escape $ |
| Strip euro sign | € | (empty) | Off (literal) |
| Strip thousands comma | , | (empty) | Off — affects every comma in the file |
| Convert decimal comma to dot | , | . | Off — only safe if comma is the decimal mark |
What 'strip the symbol' does and doesn't fix
Find & Replace only edits text. It does not reformat numbers, change locale, or validate the result is numeric.
| Problem | Find & Replace handles it? | Tool to use |
|---|---|---|
Symbol prefix £1500 | Yes — Find £ → empty | This tool |
Thousands comma 1,500 | Yes — Find , → empty (whole-file caution) | This tool |
Decimal comma 12,00 → 12.00 | Partly — Find , → . if comma is the decimal mark | This tool |
Trailing currency code 1500 GBP | Yes — Find GBP → empty | This tool |
| Validate column is now numeric | No — only substitutes text | csv-validator |
| Round / reformat decimals | No — no arithmetic | Spreadsheet |
Cookbook
Before/after amount cells from real invoicing and ecommerce exports. The header row keeps its symbol; data cells are stripped.
Strip the pound sign so SUM() works
ExampleA literal pass removes every £ from the file. The amount cells become bare numbers and the spreadsheet column flips from text to numeric.
Input: Invoice,Amount INV-1,£1500.00 INV-2,£249.50 Find: £ Replace with: (empty) (Regex OFF) Output: Invoice,Amount INV-1,1500.00 INV-2,249.50 Replacements made: 2
The dollar-sign metacharacter trap
ExampleIf you turn Regex mode on and Find $, the pattern means 'end of string' and matches nothing visible — 0 replacements. Either keep Regex off (literal) or escape it as \$.
Input: Item,Price A,$49.99 Wrong (Regex ON, Find: $): matches end-of-cell, replaces nothing → 0 replacements Right — option 1 (Regex OFF, Find: $): Price → 49.99 Right — option 2 (Regex ON, Find: \$): Price → 49.99 Replacements made: 1
Strip symbol then thousands comma in two passes
ExampleDatabase importers often want 1500.00, not 1,500.00. Strip the symbol first, then re-feed and strip the comma. Caution: the comma pass hits every comma in the file.
Pass 1 — Find: £ Replace with: (empty) £1,500.00 → 1,500.00 Pass 2 (re-feed) — Find: , Replace with: (empty) 1,500.00 → 1500.00 Final: 1500.00 (parses cleanly as a numeric)
European decimal comma to dot
ExampleAn EU-locale export writes 12,00 meaning twelve euros. If the comma is the decimal mark (not a thousands separator), replace it with a dot for a US/UK-locale importer. Only do this when you're sure no thousands commas exist.
Input (semicolon-delimited EU file): Artikel;Preis A;12,00 B;9,50 Find: , Replace with: . (Regex OFF) Output: Artikel;Preis A;12.00 B;9.50 Replacements made: 2 (safe because file has no thousands commas)
Header keeps its symbol
ExampleAccounting exports often label the column Amount (£). Because row 0 is never processed, the heading keeps the £ while every data cell loses it.
Input: Invoice,Amount (£) INV-1,£1500.00 INV-2,£249.50 Find: £ Replace with: (empty) Output (header symbol preserved): Invoice,Amount (£) INV-1,1500.00 INV-2,249.50 Replacements made: 2
Errors and edge cases
Real errors and silent failures sourced from each platform's own documentation. Match the wording to the row, fix what the row says to fix.
`$` means end-of-string in Regex mode
Caution$ is a regex metacharacter (end of input). With Regex mode ON, Find $ matches a zero-width position and replaces nothing visible, returning 0 replacements. Fix: keep Regex mode OFF (the default) so $ is literal, or escape it as \$ if you need regex for another reason. The same applies to ., ^, *, and ( in regex mode.
No column selector — stripping `,` hits every comma
By designA Find ,→empty removes commas across the whole file, not just the amount column — including commas inside Name or Address cells like Smith, John. Fix: restrict by re-feeding only after isolating the amount column with csv-column-filter, or use a regex that targets number patterns (e.g. (\d),(\d) → $1$2) to only collapse commas between digits.
Decimal-comma replace corrupts thousands-comma data
CautionReplacing ,→. only works when the comma is the decimal mark. If the file mixes 1,500 (thousands) and 12,00 (decimal), a blanket replace turns 1,500 into 1.500 (wrong by 1000x). Fix: confirm the locale first; for true thousands separators, strip the comma rather than dotting it, and handle the two patterns in separate passes.
Header symbol is preserved
PreservedRow 0 is never modified, so an Amount (£) or Total $ heading keeps its symbol while the data is cleaned. Usually desirable; if you also want the symbol out of the header, that's not possible here — use csv-header-rename to rewrite the heading separately.
One symbol per pass — mixed-currency files need several runs
By designA file with £, $, and € needs three passes (or a Regex character class [£$€] — but remember $ inside a class is literal, so that works). Fix for one pass: Regex mode with Find [£$€], Replace with empty strips all three currency symbols at once.
Empty Replace is correct here — don't mistake it for a no-op
ExpectedLeaving Replace with empty is exactly how you delete a symbol — the matched text is removed. The Run button still works with an empty Replace as long as Find is non-empty. If Find is empty, nothing runs (the button stays disabled).
Invalid regex returns the file unchanged
No changesIf you're in Regex mode and write a bad pattern (e.g. an unclosed class [£$€), the tool catches it and returns the file with 0 replacements. Fix: check the pattern; an unbalanced [ or ( is the usual cause when stripping multiple symbols.
Free tier limit on a large ledger export
Tier limitFree caps at 2 MB / 500 rows. A full year of transactions exceeds it. Fix: upgrade to Pro, or split with csv-row-splitter, run the identical symbol-strip passes on each chunk, then recombine with csv-merger.
Frequently asked questions
Should I also remove commas from numbers like '1,500.00'?
Yes if your database or import tool expects bare numbers. Re-feed the symbol-stripped output and run a second pass: Find , Replace with empty. Caution: this removes every comma in the file, including those inside text columns like Smith, John — isolate the amount column first with csv-column-filter, or use a regex (\d),(\d)→$1$2 that only collapses commas between digits.
Why does Find '$' do nothing in regex mode?
In regex, $ means 'end of string', so it matches a zero-width position and replaces nothing visible. Either keep Regex mode OFF (the default) so $ is treated as a literal dollar sign, or, if you need regex, escape it as \$. The same care applies to ., *, ^, and (.
Can I replace one currency symbol with another?
Yes — Find £, Replace with $ rewrites the symbol (useful for reporting notation). Note this only changes the glyph, not the value — there's no exchange-rate conversion; the tool only substitutes text.
Will this accidentally remove a symbol from product descriptions?
It can — there's no column selector, so stripping $ also removes a $ that appears inside a Description cell. For currency that's usually harmless, but if you need to protect another column, isolate the amount column first with csv-column-filter, or use a number-aware regex so only amounts are touched.
Can I strip £, $, and € in a single pass?
Yes — tick Regex mode and use a character class: Find [£$€], Replace with empty. Inside a character class $ is treated literally, so it works without escaping. That removes all three currency symbols across the file in one run.
How do I convert a European decimal comma like '12,00' to '12.00'?
Find , Replace with . (Regex off). This is only safe when the comma is the decimal mark and the file has no thousands commas — otherwise 1,500 would wrongly become 1.500. Confirm the locale before running, and handle thousands vs decimal commas in separate passes if both exist.
Does the header symbol get removed too?
No. The header row (row 0) is never modified, so an Amount (£) or Total $ heading keeps its symbol while every data cell is cleaned. If you also want the symbol out of the heading, rename it separately with csv-header-rename.
Does stripping the symbol make the column numeric?
It makes the text parse as a number in your spreadsheet or database — but Find & Replace only edits text; it doesn't change a data type or validate the result. After stripping, confirm the column with csv-validator, which infers per-column types and flags any cell that's still non-numeric.
What does the replacements counter tell me?
It's the number of cells that changed, not occurrences. For a symbol strip it should equal the rows that carried the symbol. If it's lower than expected, some amounts may use a different symbol or a non-breaking space before the number — run an extra pass for those variants.
What file types and sizes are supported?
.csv, .tsv, and .txt, with delimiter auto-detection (handy for semicolon-delimited EU exports). Free tier handles up to 2 MB / 500 rows; Pro removes both limits. For large ledgers, split with csv-row-splitter and recombine with csv-merger.
Is my financial data uploaded anywhere?
No. PapaParse runs entirely in your browser — invoice totals, payouts, and account data never reach a JAD server. Only an anonymous run counter is stored server-side for signed-in dashboard stats, which you can opt out of in settings.
Can I automate currency-symbol stripping in a pipeline?
Yes. GET /api/v1/tools/csv-find-replace returns the option schema (find, replace, caseSensitive, useRegex); pair the @jadapps/runner once and POST to 127.0.0.1:9789/v1/tools/csv-find-replace/run. Because each call is one pair, a currency-cleanup pipeline chains a symbol pass and a comma pass per scheduled export.
Privacy first
Processing runs locally in your browser with PapaParse. No file is uploaded — only metadata counters are saved for signed-in dashboard stats.