Ledge

When an app wants a URL, not a file

You have a link. Maybe it is an article you want to send a colleague, a video you are saving to watch tonight, or a shared document a teammate needs. You paste it into another app, and the result is not what you pictured. One app shows a file icon when you wanted the address as plain readable text. Another pastes a long string of characters when you wanted a tidy clickable link with a title. The link and the file are two different things, and most of the confusion around URLs on a Mac comes from those two being quietly swapped.

A URL and a link file are not the same thing

A URL is text. Something like https://example.com/report is an address, a line of characters that points at a page on the web. You can type it, copy it, read it aloud, or paste it into a chat box. It is not a file. It takes up no space of its own and has no icon, because it is just a string.

A link file is a container. When you drag a page’s address out of the address bar onto the desktop, macOS writes a .webloc file. Double-click that file later and the page opens. The URL lives inside the file, the way words live inside a document. It has an icon, it sits in a folder, and you can move it, copy it, or throw it away like any other file.

Both point at the same page. Neither is wrong. The trouble starts when an app expects one form and you hand it the other.

What each destination is actually asking for

Every place you can drop or paste a link has an opinion about what it wants.

A terminal wants plain text. If you paste a webloc file into a command line, you get nothing useful, because the shell reads characters, not file wrappers. A text field on a web form is the same: it wants the raw address so it can store or send it.

Finder wants a file. Drag plain text onto a folder and nothing lands, because Finder holds files, not loose strings. To put a link into a folder you need the webloc version, the container it can store.

A chat window, such as Slack or Messages, wants text. Paste the URL and the app usually builds its own preview from it. Hand it a webloc file instead and it may attach the file rather than show the link.

A rich text editor, like Notes or a mail message, is happy with either, and often turns the address into a titled link you can click. That is convenient until you actually wanted the plain address, at which point the tidy link fights you.

How to hand an app the version it wants

Once you know what each destination expects, the moves are simple.

To get plain text, click into the address bar of your browser, select the whole address, and copy it. That copies the URL as characters, ready to paste into a terminal, a form, or a chat box.

To make a link file, drag the small icon that sits at the left of the address bar out onto the desktop or into a Finder window. macOS writes a webloc there. That file is what a folder wants.

To turn a titled link back into plain text, paste it, then use Paste and Match Style, or paste it into a plain text field first and copy it again from there. The formatting falls away and you are left with the address.

None of this is hard once the two forms are clear in your head. The friction is that you have to remember which form you are holding and which form the target wants, every single time, and correct course when you guess wrong.

Letting the shelf sort it out

This is the exact problem Ledge was built to remove. Ledge turns the notch at the top of your screen into a shelf. You drag a link up to it, from a browser, a note, or a folder, and let go. It waits there until you need it.

The useful part is the hand-off. When you drop that same link on a text field, Ledge gives the field plain text. Drop it on Finder and Ledge writes the webloc file the folder wants. Drop it on a terminal and it hands over the address as characters. You are not choosing a format or converting anything. You throw one link at the shelf, and each destination receives the version it can actually use.

That means you stop thinking about whether you are holding a URL or a link file. You hold the thing you want to move, and the translation happens at the moment you set it down.

A simple mental model to keep

If you remember nothing else, remember this: a URL is a line of text, and a webloc is a file that holds that line. Text goes to terminals, forms, and chat boxes. Files go to folders. Rich editors take either and usually dress it up as a titled link.

When a paste comes out wrong, you are almost never looking at a broken link. You are looking at the right address in the wrong wrapper. Copy it again in the form the destination wants, or let a shelf do that step for you, and the link behaves. The web address never changed. Only its packaging did, and packaging is the part worth getting right.