About the UTM Link Builder
This UTM link builder adds campaign tracking parameters to any URL so Google Analytics and other analytics tools can tell exactly which email, ad, post or partner sent each visitor. Enter your landing page and the source, medium and campaign name, plus optional term, content and campaign ID values, and copy the finished link.
It is built for marketers running newsletters, paid social, influencer campaigns, QR codes on print and anything else where the default referrer would be missing or vague. The builder keeps any query string already on the URL, puts the parameters before a #fragment where they belong, and URL-encodes special characters so the link never breaks.
UTM values are case-sensitive in Google Analytics, so "Facebook" and "facebook" show up as two different sources. By default the builder lowercases values and replaces spaces with underscores to keep reports tidy; you can turn either behavior off.
How to use the utm link builder
- 1Paste the landing page URL.
- 2Enter the source, medium and campaign name.
- 3Add optional term, content or campaign ID values.
- 4Choose lowercase and space handling to match your naming convention.
- 5Copy the campaign URL into your email, ad or post.
Formula and method
The builder trims each value, optionally lowercases it and replaces spaces, then URL-encodes it with encodeURIComponent so characters such as &, = and # cannot break the link. Empty optional fields are skipped. Parameters are appended in the conventional order source, medium, campaign, id, term, content.
If the URL already contains a query string the UTM parameters are joined with &; otherwise a ? starts the query. Anything after a # is moved to the end, because browsers do not send the fragment to the server and analytics tools would not see parameters placed after it. A URL with no scheme gets https:// added.
- utm_source
- Referrer: google, newsletter, facebook
- utm_medium
- Channel: email, cpc, social
- utm_campaign
- Campaign name or promotion
- utm_content
- Variant or link placement
Worked examples
Newsletter link
The campaign name "Spring Sale 2026" is lowercased and its spaces become underscores. Empty term and ID fields are skipped, so four parameters are added after a ? because the URL had no query string.
URL that already has a query and a fragment
Because ?id=42 already exists, the UTM parameters are joined with &, and the #reviews fragment is moved after them so analytics can read the tags. Dash mode turns "Q3 Launch" into q3-launch.
Special characters are encoded
https:// and a trailing slash are added to the bare domain. With spaces kept, they are encoded as %20 and the ampersand as %26, so it is read as part of the campaign name instead of starting a new parameter.
Frequently asked questions
What are UTM parameters?+
UTM parameters are tags added to the end of a URL — utm_source, utm_medium, utm_campaign, utm_term and utm_content — that tell analytics tools such as Google Analytics where a visit came from. They do not change the page the visitor sees.
Which UTM parameters are required?+
Google Analytics recommends always setting utm_source, utm_medium and utm_campaign. utm_term, utm_content and utm_id are optional and used for keywords, ad or link variants, and campaign IDs for cost data import.
Are UTM parameters case-sensitive?+
Yes. Google Analytics treats "Email", "email" and "EMAIL" as three different mediums, which splits your reports. Agreeing on lowercase values with underscores or dashes is the simplest way to keep data clean.
Should I use UTM tags on internal links?+
No. Tagging links between pages of your own site overwrites the real source of the visit (the newsletter or ad that brought the visitor) with your internal tag, which corrupts attribution reports. Use UTM tags only on links from external places: emails, ads, social posts, partners and print.
Do UTM parameters affect SEO?+
UTM-tagged URLs can be crawled as duplicates if they are linked publicly, so pages should have a canonical tag pointing to the clean URL. Google generally handles common tracking parameters well when a canonical is present.