How to merge address fields into a single address column
- Step 1Export the contact or customer CSV — Download from your CRM, store admin, or mailing tool. Shopify, WooCommerce, and most CRMs export address parts as separate columns (
Shipping Address1,Shipping City,Shipping Zip) — exactly the shape this tool is built for. - Step 2Drop the file onto the merger above — The header row is parsed and every column becomes a checkbox. PapaParse auto-detects comma vs semicolon vs tab from the file, so EU-locale exports load without you setting anything.
- Step 3Tick the address columns in the order you want them joined — The tick order is the join order. To produce
Line 1, Line 2, City, State, Postcode, click those checkboxes in that sequence. There is no drag-to-reorder — ticking order is the only control over column order. - Step 4Set the separator — Type
,(comma-space) for a standard single-line address, a single space for a label-friendly run-on, or\nis NOT interpreted — the field stays literal. The default is a single space. Whatever you type is inserted verbatim between every pair of values. - Step 5Name the new column — Default is
merged. Rename it toFull Addressorship_toto match your mail-merge field or shipping-API key. The new-column-name field cannot be left blank — the Merge button stays disabled until it has a value. - Step 6Merge, then clean up doubled separators if Line 2 was empty — Click Merge columns; the source columns disappear and the merged address column is written at the front of the file. Download is suffixed
.merged-cols.csv. If some rows had an empty Address Line 2, run the result through CSV Find & Replace to collapse, ,→,before importing.
What each control actually does
The browser tool exposes exactly these three controls plus the column checklist. Anything not listed here (skip-blank, drag-reorder, prefix/suffix, position picker) does not exist in the web UI.
| Control | What it does for address data | Default |
|---|---|---|
| Column checklist (checkboxes) | Pick ≥2 address columns. Tick order = join order. No drag-reorder exists; re-tick in the sequence you need | Nothing ticked |
| Separator (text input) | Inserted verbatim between each value. , for single-line address, space for labels. Empty cells still get a separator on each side | Single space |
| New column name (text input) | Header of the resulting merged column. Cannot be blank — Merge button is disabled until filled | merged |
| Insert position | Browser tool always places the merged column at position 0 (front of file). The API/orchestrator expose insertAt; the in-browser tool does not | 0 (front) |
Common address-export shapes and the merge recipe
How the address parts are named in popular platforms and the tick-order to produce a standard single-line address.
| Source platform | Address columns it exports | Tick order for `Line1, Line2, City, State, Zip` | Suggested separator |
|---|---|---|---|
| Shopify (Customers export) | Address1, Address2, City, Province, Zip, Country | Address1 → Address2 → City → Province → Zip | , |
| WooCommerce (order export) | Shipping Address 1, Shipping Address 2, Shipping City, Shipping State, Shipping Postcode | tick the five shipping fields in order | , |
| HubSpot / Salesforce contacts | Street Address, Street Address 2, City, State/Region, Postal Code | Street → Street 2 → City → State → Postal Code | , |
| Generic CRM (single line wanted for labels) | addr1, addr2, city, state, zip | addr1 → addr2 → city → state → zip | space |
Cookbook
Real before/after rows from address-bearing exports. Names and addresses are illustrative. The tool concatenates literally — these show exactly what comes out, including the rough edges.
Standard five-part address into one column
ExampleThe happy path: every address part is populated, you tick Line 1 → City → State → Zip and use , . The four source columns vanish; the merged column lands at the front.
Input: Name,Address1,City,State,Zip Acme Ltd,123 Main St,Springfield,IL,62704 Tick order: Address1, City, State, Zip Separator: ", " New name: Full Address Output (merged column first, source columns removed): Full Address,Name "123 Main St, Springfield, IL, 62704",Acme Ltd
Empty Address Line 2 produces a doubled separator
ExampleThis is the #1 surprise. There is no skip-blank logic — the empty Line 2 still emits its separator on both sides, so you get , ,. Plan a cleanup pass.
Input:
Name,Address1,Address2,City,Zip
Jane Doe,14 High St,,London,EC1A 1BB
Tick: Address1, Address2, City, Zip Separator: ", "
Output:
merged,Name
"14 High St, , London, EC1A 1BB",Jane Doe
^^^ doubled separator from the empty Address2
Fix-up: CSV Find & Replace ", , " -> ", "Street name containing a comma stays in one field
ExampleThe parser is quote-aware (RFC 4180). A comma inside a quoted street value does not break the row, and the merged output is re-quoted so the comma stays inside the address field.
Input: Name,Address1,City Bob,"Flat 2, 14 High St",Leeds Tick: Address1, City Separator: ", " Output (the inner comma is preserved, whole field re-quoted): merged,Name "Flat 2, 14 High St, Leeds",Bob
Label format with a single-space separator
ExampleFor Dymo / Avery label runs you often want a space-joined run-on rather than comma-delimited. Same columns, just change the separator.
Input: Name,Address1,City,Zip Sam,500 Oak Ave,Portland,97201 Tick: Address1, City, Zip Separator: " " (single space) Output: merged,Name 500 Oak Ave Portland 97201,Sam
Leading-zero postcode survives because the tool is text-only
ExampleA US ZIP like 02134 or a UK outward code stored as text is concatenated byte-for-byte. The merger never coerces numbers — but if Excel already dropped the leading zero before you exported, the zero is gone before the file reaches this tool.
Input (Zip stored as text 02134): Name,Address1,City,Zip Lee,9 Elm St,Boston,02134 Tick: Address1, City, Zip Separator: ", " Output (leading zero preserved): merged,Name "9 Elm St, Boston, 02134",Lee Gotcha: if the source CSV already had 2134 (Excel ate the zero on a previous open), this tool cannot recover it — re-export with Zip as text.
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.
Empty Address Line 2 yields a doubled separator
By designThere is no skip-blank option. An empty source cell contributes an empty string between its separators, so 123 Main St + ` + London with , becomes 123 Main St, , London. This is the single most common address-merge artefact. Clean it after the merge with [CSV Find & Replace](/tool/csv-find-replace) (replace , , with , `).
Fewer than two columns ticked
invalid_configThe Merge button is disabled until at least two columns are checked, and the API rejects the request with csv-column-merger requires ≥ 2 columns (HTTP 400). Merging a single column is a no-op the tool deliberately refuses — use CSV Header Rename if you only want to rename one column.
Source columns are removed, not kept
By designAfter merging, the original address columns no longer exist in the output — they are replaced by the single merged column. If you need both the parts and the combined field, duplicate the parts first (e.g. with a spreadsheet) before running the merge, because the tool cannot keep originals.
Merged column lands at the front, not at the end
ExpectedIn the browser tool the merged column is always inserted at position 0 — it becomes the first column of the file. The thin older copy that said 'the merged column is appended' was wrong. If your importer expects the address in a specific column position, reorder afterwards with CSV Column Reorder. The API and orchestrator accept an insertAt value for finer control.
Tick order, not visual order, controls the join
ExpectedIf you tick City before Address1, the output reads London 14 High St — the join follows your click sequence, not the column layout. There is no drag-to-reorder UI. Untick everything and re-tick in the exact order you want if you get it wrong.
Free tier file-size / row ceiling hit
Upgrade requiredFree accounts are capped at 2 MB per file and 500 rows; this is a Pro tool. A large contact export (tens of thousands of addresses) needs Pro, which raises the limits to 100 MB / 100,000 rows. Split a big list first with CSV Row Splitter if you want to stay on free tier.
Country column merged but not wanted on a single-country list
PreservedIf you tick a Country column on a domestic-only list, every address gains a trailing , United States (or whatever the value is). The tool merges exactly what you tick. Simply don't tick the country column, or drop it first with CSV Column Remover.
Address cell contains a literal line break
PreservedA multi-line address value that was correctly RFC-4180 quoted in the source (newline inside a quoted field) is preserved and the merged field is re-quoted so the line break survives. If the source CSV had an unquoted newline mid-field, the parser already split the row before merge — fix the source export's quoting first.
Two columns share the same header (e.g. two `City` columns)
SupportedDuplicate headers are shown as separate checkboxes by position, so you can tick the specific one you want. The merge resolves columns by the index you ticked, so duplicate header names don't cause ambiguity in the browser tool.
Frequently asked questions
Can I skip blank address lines so I don't get double separators?
No — there is no skip-blank option, despite what an earlier version of this page implied. An empty Address Line 2 cell still contributes its separator, so 123 Main St, , London is the literal output. The reliable fix is to merge first, then run the result through CSV Find & Replace replacing , , with , (and a leading/trailing , if Line 1 or the last field was the empty one).
Will the original address columns be kept after merging?
No. The source columns are removed and replaced by the single merged column. This is the opposite of what older copy on this page said. If you need both the individual parts and the combined address, duplicate the part columns before merging — the tool offers no 'keep originals' toggle.
Where does the merged address column appear in the output?
At the front of the file — position 0 — in the browser tool. So the output is Full Address, Name, Email, .... If your importer needs the address in a specific position, follow up with CSV Column Reorder. The API and orchestrator accept an insertAt parameter to place it elsewhere; the in-browser tool always uses 0.
How do I control the order the address parts are joined in?
By the order you tick the checkboxes. Ticking Address1 then City then Zip produces 123 Main St, Springfield, 62704. There is no drag-to-reorder. If the order comes out wrong, untick all and re-tick in the sequence you want.
What separator should I use for a shipping or mail-merge label?
Type whatever your destination expects — it is inserted verbatim. , (comma-space) gives a standard single-line address; a single space gives a label-friendly run-on. Check the target system's docs: ShipStation and EasyPost generally accept either; mail-merge data sources don't care because they read it as one field value.
Does the tool reformat or validate the address?
No. It is a literal text concatenation — it does not standardise casing, expand St to Street, validate postcodes, or geocode anything. For casing fixes run CSV Case Converter on the parts first; for whitespace use CSV Whitespace Trimmer. Address verification needs a dedicated geocoding service, which this is not.
What happens to a street name that contains a comma?
It is preserved. The parser is RFC-4180 quote-aware, so "Flat 2, 14 High St" is read as one field, and the merged output re-quotes the whole address so the inner comma stays inside the field rather than splitting a column on re-import.
Will a leading zero in a US ZIP or UK postcode be lost?
Not by this tool — it is text-only and copies the value byte-for-byte. But if Excel already converted 02134 to the number 2134 before you exported, the zero is gone before the file reaches the merger. Re-export with the Zip column formatted as text, then merge.
Can I merge more than five address columns?
Yes — tick as many as you need (Address Line 1, 2, 3, City, County, State, Postcode, Country). The only minimum is two. They all collapse into the one merged column in your tick order, each pair joined by the separator.
Is my customer address data uploaded anywhere?
No. Parsing and merging run entirely in your browser via PapaParse. Addresses, names, and order data never reach a server. The only thing recorded server-side (if you're signed in) is a usage counter — file processed, no content — for your dashboard.
How big a contact list can I merge?
This is a Pro tool. Free tier caps at 2 MB / 500 rows; Pro raises it to 100 MB / 100,000 rows, with higher tiers beyond that. For a list larger than your tier allows, split it first with CSV Row Splitter, merge each chunk, then recombine the chunks with the file-stacking CSV Merger.
Can I run the address merge in an automated pipeline?
Yes. GET /api/v1/tools/csv-column-merger returns the option schema; pair the @jadapps/runner once, then POST your CSV plus { columns, separator, newHeaderName, insertAt } to 127.0.0.1:9789/v1/tools/csv-column-merger/run. The runner is on-device, so addresses never leave your machine. A common flow: nightly CRM export → column-merge address → push to the shipping platform.
Privacy first
Processing runs locally in your browser with PapaParse. No file is uploaded — only metadata counters are saved for signed-in dashboard stats.