Bulk URL shortener
Turn a campaign or catalogue list into short links with named slugs and tags. Preview a CSV in the dashboard, or process the list through the API.
Use CSV Import when you want to inspect the columns and sample rows before creating links. Use the bulk API when another system already holds the list and needs to store the resulting short URLs. CSV Import and Bulk Sheets start on Starter; API access is included on every plan, within its allowances.
The small shortener form on this page creates one link at a time. To process a list, sign in, choose the domain that will host the links and use the appropriate bulk workflow. Check your remaining link allowance before starting a large import.
Shorten your link
Free, instant, no ads. A QR code comes with it.
A quick anonymous link cannot be edited or measured. Create a free account first if you need to change its destination or see clicks.
- 1,000 links free
- 6 custom domains free
- No credit card
How to do it in three steps
- 1
Prepare a CSV
Use one link per row with an Original URL column. Add Link slug, Link title and Tags if needed. Save as UTF-8 CSV and quote values that contain commas.
- 2
Preview the mapping
In the dashboard, select the destination domain and open CSV Import. Upload the file or paste CSV text. Review Map columns and the preview, including the mapping from Original URL to original_url.
- 3
Import and reconcile
Check the Importing into domain, then select Import links. Review the success and failed counts in Import history. Download the error CSV when present, correct the affected rows and confirm the created links before trying again.
Which bulk method should you choose?
CSV Import suits a one-off list or a file exported from Excel or Google Sheets. Export the sheet as CSV first; the import screen accepts a file or pasted CSV text, not an .xlsx workbook. Bulk Sheets is useful for the dedicated spreadsheet workflow in your account. Choose POST /api/links/bulk for an automated job and inspect the result for each submitted item.
Row limits and plan limits are separate
A CSV import accepts at most 10,000 data rows per file. The bulk link API accepts at most 1,000 objects per request. Those limits do not increase your plan allowance: Free currently has 1,000 short links and 1,000 API-created links within the applicable quotas. Paid optional settings such as expiration still need the corresponding feature access. Split large files or requests and start with a small sample.
Keep the mapping simple
Original URL is required. Link slug chooses the path after the slash, Link title names the record, and Tags can hold values separated by pipes. The preview shows the first 20 rows, so also check the rest of your source file for missing destinations or duplicate slugs. Imported destinations retain their supplied campaign query strings. Quote any field containing a comma so it stays in one CSV cell.
Recover from a partially completed import
An import can create valid rows while other rows fail; it does not roll back the successful links. Review Import history and the actual links, then fix only the rows that need another attempt. A quota limit can stop processing before the whole file is attempted. Error reporting is capped, so reconcile the original row count with the outcome instead of assuming the error CSV contains every unfinished row. Re-importing a complete file can create duplicates or slug conflicts.
Troubleshoot destinations, slugs and domains
Missing destination URL usually means an empty cell or the wrong column mapping. A taken slug needs a different name or a review of the existing link. Choose the intended workspace domain before import; preserving a short code on a different hostname does not preserve the old full short URL. Test a few final links, their campaign parameters and any file-sharing permissions before distributing the batch.
Example CSV: two campaign destinations
Original URL,Link slug,Link title,Tags
https://example.com/catalog?utm_source=email,catalog-email,Email catalogue,email|catalog
https://example.com/menu,menu,Restaurant menu,printOn a connected go.yourdomain.com domain, successful rows would create https://go.yourdomain.com/catalog-email and https://go.yourdomain.com/menu. These are illustrative addresses. The domain must belong to your workspace and the slugs must be available. A pipe separates multiple tags inside one Tags value.
Guides and documentation
Related guides
URL shortener API
Create short links from an application, scheduled job or publishing workflow. Start with one authenticated request, then add bulk creation and reporting.
Long URL to short URL converter
Make a long web address easier to share, then check that the short link reaches the intended page with the parameters it needs.
URL shortener with UTM parameters
Add UTM tags, keep every query parameter and still share a short, clean link.
A Bitly alternative for shortening links
Everything you use Bitly for — short links, QR codes, analytics and an API — with more on the free plan.
Branded URL shortener
Share a recognisable link on your own domain, with a name you choose and clicks you can measure.
Start Free — no credit card
The free plan includes 1,000 links, 6 custom domains and 50,000 tracked clicks a month, free forever. Choose a free subdomain from six shared domains. Paid plans start at $4 a month when you outgrow it, and you keep everything you have built.
Frequently asked questions
Is bulk shortening available for free?
The bulk link API is available on Free, within its current 1,000 API-created-link and overall link allowances. CSV Import and Bulk Sheets require Starter or above.
Can I shorten URLs from Excel or Google Sheets?
Yes. Export a list with a header row as CSV, then upload or paste it in CSV Import. Review the column mapping before starting the import.
How many rows can one import contain?
Up to 10,000 data rows per CSV file. The separate bulk link API accepts at most 1,000 links per request. Both remain subject to your plan limits.
Can I choose a different name for every short link?
Yes. Add a Link slug column to a CSV, or a path field to each API link object. Each requested slug must be available on the selected domain.
Should I upload the whole file again after an error?
First check which rows succeeded. Imports can partially complete, and reaching a quota can leave rows unprocessed. Reconcile the results, fix the affected rows and retry only the work still needed.
