# Import shortcuts

If you already have a list of links stored in your browser or in a spreadsheet, you don't need to recreate them one by one. Lora imports shortcuts in bulk from your browser bookmarks, from a CSV file, or straight from a shared Google Sheet, lets you review everything before anything is created, and gives you a truthful account of what landed even if the import gets interrupted.

## Start an import

Right-click the **+** button at the top of the sidebar and choose **Import bookmarks** or **Import from CSV**. You can also go straight to `https://app.uselora.com/<your-workspace>/import` (bookmarks) or `https://app.uselora.com/<your-workspace>/import?source=csv` (CSV), which open the same dialogs.

## Import from bookmarks

### Export your bookmarks

You first need to export your bookmarks from your browser as an `.html` file. The steps depend on your browser:

#### Chrome, Edge, and Brave

1. Open the browser menu and go to **Bookmarks** → **Bookmark Manager**.
2. In the Bookmark Manager, click the three-dots menu and select **Export Bookmarks**.
3. Save the file as `bookmarks.html` on your computer.

#### Firefox

1. Open the browser menu and go to **Bookmarks** → **Manage Bookmarks**.
2. In the Library window, click **Import and Backup** → **Export Bookmarks to HTML**.
3. Save the file as `bookmarks.html`.

#### Safari

1. In the menu bar, click **File** → **Export Bookmarks**.
2. Save the file as `bookmarks.html`.

The file stays on your computer — Lora parses it in your browser and only sends the destinations and slugs you choose to keep, never the raw file.

### Choose what to import

Once you upload the file, you'll see every bookmark grouped by the folder it was in, with a checkbox per bookmark and per folder. Deselect anything you don't want to bring over.

### Review before creating anything

The review screen shows every shortcut Lora is about to create:

- **Slugs are derived from the destination URL**, the same way the create-shortcut dialog derives them — not from the bookmark's title. A bookmark titled "My Favorite Docs Page" pointing at `https://docs.example.com/handbook` becomes `short/docs-example-handbook`, not `short/my-favorite-docs-page`. If two bookmarks would derive the same slug, the second gets a `-2` suffix.
- **Everything goes into one folder.** Browser bookmark folders don't carry over — pick a single target folder on the review screen, and every shortcut you create lands there, regardless of which folder it lived in inside the export.
- **Visibility** defaults to Workspace and can be changed per row (subject to what your plan allows).

Nothing is created until you click **Create**.

## Import from CSV

CSV import is ideal if you're migrating links from another tool (GoLinks, Bitly, a link shortener's export) or maintaining them in a spreadsheet. You can upload a `.csv` file or point Lora at a Google Sheet you've shared — either way, the rows are read in your browser and only the reviewed data is sent, never the raw file.

### Prepare your file

A header row is required. Lora recognizes these columns (any others in your file are simply not imported):

| Column | Required? | Notes |
| --- | --- | --- |
| Destination URL | Yes | The link to redirect to. You don't need to write out `https://` — a bare `example.com` works, exactly as it does in the create-shortcut dialog. `url`, `link`, and `long_url` are also recognized as headers for this column, along with several other common export formats. |
| Slug | No | The shortcut's short name (e.g. `handbook`). Leave it blank, or omit the column, and Lora derives one from the destination URL — the same rule it uses everywhere else. |
| Title | No | A human-friendly name shown in lists. |
| Description | No | Shown alongside the shortcut in lists. |
| Folder | No | Matched by name against a folder **that already exists** in your workspace. Rows with no match (or no folder mapped at all) go to a target folder you pick on the review screen — nothing is ever created here. |
| Tags | No | One or more existing tag names, separated by a comma, semicolon, or pipe. Matched by name, case-insensitively, against tags **that already exist** in your workspace — a name with no match is skipped, not created, and the row still imports. |
| Visibility | No | `workspace`, `unlisted`, or `private`, matched case-insensitively. Defaults to Workspace when the column is omitted, blank, or an unrecognized value. |

### Upload a file, or paste a Google Sheets link

The upload step has two tabs.

**Upload a file** takes a `.csv` from your computer. It stays there — Lora reads it in your browser.

**Google Sheets** takes a link, so you don't have to download and re-upload anything:

1. In Google Sheets, click **Share** and set General access to **Anyone with the link** → **Viewer**.
2. Open the tab you want to import and copy the URL from your browser's address bar.
3. Paste it into Lora and click **Import sheet**.

Lora imports **the tab your link points at**, not always the first one — which is why it's worth copying the address-bar URL with the right tab open. Everything after that is identical to a file import: the same column mapping, the same review screen.

A few things worth knowing:

- **The sheet has to be link-shared.** If it isn't, Google hands Lora its sign-in page instead of your data, and you'll see a message asking you to check the sharing setting. Nothing is imported.
- **"Publish to web" links don't work** — that's a different kind of address. Copy the link from the **Share** dialog instead.
- **Lora reads the sheet once, at the moment you click Import.** There's no ongoing connection, no Google sign-in, and no access to any of your other files. Editing the sheet afterwards doesn't change the shortcuts you already created from it.
- The same limits apply as to an uploaded file: 10 MB and the first 2,000 rows.

### Map your columns

Once the rows are in — from a file or from a sheet — Lora shows a mapping screen: one row per property above, each with the column it auto-matched (correct it if it guessed wrong) and a preview of what that column's values will become. Destination URL is the only required property — everything else can be left unmapped.

Two things to know about those dropdowns:

- Every optional property has a **Not imported** choice, so you can always say "skip this one" explicitly.
- **Each column can only feed one property.** If your file has both `URL` and `URL 2` and you give `URL` to a second property, whichever property had it before is cleared — so you can see the column moved rather than quietly doing two jobs at once. If you genuinely need one column in two places, duplicate the column in your file.

### A note on http and https

Lora writes destinations the same way whichever route they came in by — a file, a Google Sheet, or your browser's bookmarks:

- A bare hostname gets `https://`. `example.com` becomes `https://example.com`.
- A `http://` destination is **upgraded to `https://`**, the same secure default the create-shortcut dialog applies. Lora tells you how many rows this affected before anything is created.
- Need to keep `http://` — an internal tool with no HTTPS, say? Put a `!` in front of it in your file: `!http://intranet.example`. That row imports as HTTP, untouched.
- Links Lora can't redirect to — `mailto:`, `ftp://`, `chrome://`, browser bookmarklets — are left out and listed on the review screen with the row number.

### Review before creating anything

Before you click **Create**, the review screen shows every shortcut Lora is about to make, plus a folder-mapping summary if you mapped a Folder column: which folder names matched an existing folder, and which fall back to the target folder you choose.

## What happens if an import is interrupted

Large imports are sent in chunks, for both bookmarks and CSV. If your connection drops, you close the tab, or you hit your plan's shortcut limit partway through, Lora tells you exactly what happened rather than guessing:

- Shortcuts that were already created stay created.
- The summary screen reports counts for **created**, **skipped** (with a reason — an invalid destination, a taken slug, and so on), and **not imported** (rows the import never got to).
- If you reopen the import dialog after an interrupted import, a banner tells you how many of the total were created before it stopped.
- Uploading the same file again is always safe: rows that were already imported are reported as duplicates rather than creating a second copy.

After the import, you can edit any shortcut to adjust its slug, folder, tags, or visibility.