Bulk UTM Generator
Import hundreds of destination URLs from CSV, TSV, TXT, or JSON files and generate campaign tracking URLs for every row in one click. All processing stays in your browser.
Bulk Import Templates
Download a template, fill in your URLs and UTM parameters, then import the file using the panel on the left.
How to Generate Bulk UTM URLs
- 1.Download a template file above in your preferred format (CSV, TSV, TXT, or JSON).
- 2.Open the file in a spreadsheet editor or text editor and fill in your destination URLs and UTM parameters.
- 3.Save the file and import it using the Import File area on the left.
- 4.Review the preview dialog, optionally fill in common parameters, and click Generate All URLs.
- 5.Inspect the generated URLs in the results table. You can edit, copy, duplicate, or remove individual rows. Use the Apply Template dropdown to fill UTM fields in bulk.
- 6.Export the final results as CSV, TSV, or JSON using the toolbar buttons.
Supported Columns
Your file should include a url column. UTM parameter columns are optional — you can apply them after import using the template dropdown or common parameters dialog.
Helpful Notes
- •Column headers are case-insensitive. The importer matches them by lowercased name.
- •CSV files can use comma or semicolon separators — the importer auto-detects which to use.
- •TXT files contain one URL per line with no column headers. Only the URL column is populated from a TXT import — you can add UTM parameters using the common parameters dialog or the Apply Template dropdown.
- •JSON files must be an array of objects with column names as keys (e.g. an object with
url,utm_source, etc.). - •Maximum file size is 10 MB. Larger files will be rejected.
- •No data leaves your browser — all processing happens client-side.
Free UTM Builder
Need to generate a single campaign tracking URL quickly? Use the individual UTM Builder for instant URL generation with full parameter control and QR code export.
Single URL Generation on the Fly
Paste a destination URL, fill in UTM parameters from smart presets, and copy the result as plain URL, Markdown, or HTML. Generate QR codes and save to history for reuse.
Everything You Need for Bulk Campaign Tracking
Import, generate, edit, and export campaign URLs across hundreds of rows at once.
File Import
Import CSV, TSV, TXT, or JSON files. CSV auto-detects comma or semicolon delimiters. Files up to 10 MB supported.
Bulk Generation
Generate campaign URLs for every row in your imported file with a single click. Each row is processed individually.
Downloadable Templates
Download header-only CSV, TSV, TXT, or JSON templates pre-configured with the column names the importer expects.
Editable Results Table
Every field is editable after import. Changes trigger automatic URL regeneration so results stay in sync.
Common Parameters
Apply shared UTM values to every row when importing URLs-only files. Fill source, medium, campaign, term, and content in one pass.
Validation & Deduplication
Invalid URLs are flagged per row. Duplicate generated URLs are detected and highlighted so you can review before exporting.
Export Results
Export generated URLs as CSV, TSV, or JSON. Copy all valid URLs to clipboard with one click. Each export includes the generated URL and UTM fields.
Privacy First
100% client-side. Imported files, generated URLs, and UTM data never leave your browser. No signup required.
How to Use the Bulk UTM Generator
Generate campaign tracking URLs for hundreds of links in a few steps.
Prepare Your File
Download a template or prepare a CSV, TSV, TXT, or JSON file with your destination URLs in a column named url. Add optional UTM columns as needed.
Import & Review
Drop or browse to select your file. The preview dialog shows detected columns, row count, and validation summary. Confirm to import.
Generate & Export
Click generate to produce campaign URLs for every row. Edit inline, apply template presets, then export as CSV, TSV, or JSON.
UTM Parameters for Bulk Import
Each column in your import file maps directly to a UTM parameter on the generated URL.
url
The only required column. Contains the destination URL for each row. The generator appends UTM parameters to create the final campaign URL.
utm_source
Identifies the traffic origin such as the platform or publication. Examples: google, newsletter, facebook. Optional column in import.
utm_medium
Describes the marketing channel. GA4 uses this for default channel grouping. Examples: cpc, email, paid_social. Optional column.
utm_campaign
The campaign name. Use descriptive names with hyphens or underscores. Examples: spring_sale, product_launch_q2. Optional column.
utm_term
The keyword or search term for paid campaigns. Example: running+shoes. Optional column.
utm_content
Differentiates links or ads in the same campaign. Used for A/B testing content variants. Example: hero_banner, sidebar_cta. Optional column.
Bulk UTM Naming Best Practices
Keep your campaign data clean and consistent across all rows with these conventions.
Use Lowercase Consistently
Google Analytics treats Google and google as different sources. Use lowercase across all rows to prevent data fragmentation.
Replace Spaces with Hyphens
UTM parameters with spaces get URL-encoded as %20. Use spring_sale not spring sale for clean URLs.
Standardise Column Values
Use the same source and medium values across all rows in a batch. Mixing paid_social, paidsocial, and paid-social fragments analytics data.
Use Descriptive Campaign Names
Include campaign theme, year, or channel in the name. Examples: spring_sale_2024, q2_product_launch. Apply the same convention across your file.
Keep Content Values Specific
Use the content column to differentiate links within the same campaign. For bulk imports, assign unique content values per row when testing multiple variants.
Use Common Parameters for Repetition
If every row shares the same source, medium, and campaign, import URLs only and use the common parameters dialog to apply them to all rows at once.
Bulk Import Examples
See how CSV, TSV, TXT, and JSON files map to generated UTM URLs.
CSV Import
A CSV file with URLs and UTM parameters. The url column is required; all UTM columns are optional.
url,utm_source,utm_medium,utm_campaign
https://example.com/page1,google,cpc,spring_sale
https://example.com/page2,google,cpc,spring_saleTXT Import
A plain text file with one URL per line. No column headers required. UTM parameters can be added via the common parameters dialog.
https://example.com/page1
https://example.com/page2
https://example.com/page3JSON Import
A JSON array of objects with column names as keys. Every field is optional; missing fields default to empty.
[{"url":"https://example.com/page","utm_source":"google","utm_medium":"cpc"}]Frequently Asked Questions
Which file formats does the bulk import support?
CSV (.csv), TSV (.tsv), TXT (.txt), and JSON (.json). CSV files support both comma and semicolon delimiters — the importer auto-detects which to use. Maximum file size is 10 MB.
Which columns are required in my import file?
Only the <code>url</code> column is required. All UTM parameter columns (utm_source, utm_medium, utm_campaign, utm_term, utm_content) are optional. Column headers are case-insensitive.
Can I paste URLs manually instead of uploading a file?
Yes. Click 'Paste URLs manually' to switch to a text area where you can enter one URL per line. The tool processes them the same way as a TXT import.
What happens if my file only contains URLs without UTM parameters?
The tool detects that only URLs are present and opens a dialog where you can apply common UTM parameters to every row at once. You can also skip this and add parameters later using the template presets.
How do I apply the same UTM values to all rows?
Use the 'Apply Template' dropdown in the results toolbar. It contains 20 built-in campaign presets. Selecting a preset fills the UTM fields for every row. You can also use the common parameters dialog during import.
Can I edit imported rows after importing?
Yes. Every field in the results table is editable. Changes trigger automatic URL regeneration within 250 milliseconds. You can also duplicate or delete individual rows.
How does duplicate detection work?
After generation, the tool compares the generated URLs across all rows. If two rows produce the same campaign URL, the duplicate is flagged with a warning so you can review and edit before exporting.
What status values can a row have?
Each row is assigned one of three statuses: <strong>valid</strong> (URL generated successfully), <strong>invalid</strong> (missing or malformed destination URL), or <strong>duplicate</strong> (generated URL matches another row).
How do I export the generated results?
Use the toolbar buttons to export as CSV, TSV, or JSON. Each export includes the generated URL, all UTM fields, and the status for every row. You can also copy all valid URLs to the clipboard.
Does the tool preserve existing query parameters on the destination URL?
Yes. If a destination URL already contains query parameters or UTM values, they are preserved. The generator appends missing UTM parameters and only overwrites those that the row defines.
Can I use URL shorteners with the bulk generated URLs?
Yes. The generated campaign URLs are standard URLs that work with any URL shortener. Copy the valid URLs and paste them into your preferred shortening tool.
Is my data uploaded to any server?
No. All file parsing, URL generation, and validation happens locally in your browser. Imported files and generated URLs are never transmitted to any server.
Is this tool really free?
Yes, completely free. No usage limits, no premium tiers, no signup required, and no hidden costs.
What is the maximum number of rows I can process?
The tool handles up to 20,000 rows smoothly. Since all processing runs client-side, performance depends on your device. There are no server-imposed limits.
Do I need an internet connection to use the Bulk UTM Generator?
No. After the page loads, the Bulk UTM Generator works fully offline. All processing is done locally in your browser with no server communication.
Can I import a file with semicolons instead of commas?
Yes. The CSV parser automatically detects whether a file uses commas or semicolons as delimiters based on the frequency of each character in the first few rows.
Privacy
100% Client-Side
All file parsing, URL generation, and validation happens locally in your browser. No data is uploaded to any server.
No Tracking
We do not collect analytics on your imported files or generated campaign URLs. What you build stays private.
No Storage
Imported files and generated URLs are not stored on our servers. Session state persists in browser localStorage only.
Documentation
Supported UTM Parameters
Import Format Requirements
- CSV: header row with column names, comma or semicolon delimited.
- TSV: header row with column names, tab delimited.
- TXT: one URL per line, no header row.
- JSON: array of objects with column names as keys.
- Column headers are case-insensitive.
- Only the
urlcolumn is required; all UTM columns are optional. - Maximum file size: 10 MB.
URL Generation Behaviour
- Each row is processed independently. The destination URL is parsed and UTM parameters are appended.
- Missing protocols are automatically normalised to
https://. - Existing query parameters on the destination URL are preserved.
- Rows with missing or invalid destination URLs are flagged as invalid.
- Generated URLs that match another row are flagged as duplicates.
Export Options
- Copy all valid generated URLs to the clipboard.
- Export as CSV (
.csv) with UTF-8 BOM header. - Export as TSV (
.tsv) with tab-separated columns. - Export as JSON (
.json) with pretty-printed array of objects. - Each export includes the generated URL, all UTM field values, and the row status.
Privacy & Data Handling
- 100% client-side processing — no data uploaded to any server.
- Imported files and generated URLs are not stored on the server.
- Session state persisted in browser localStorage only.
- No analytics tracking, no cookies, no signup required.
Start generating bulk UTM URLs now
No account needed. No data leaves your browser.