Image to link

Turn an image into a link

Upload a photo, screenshot or graphic and get one clean URL. A person who opens it sees the image on a page; an <img> tag pointed at the same URL gets the image itself.

1Choose a file
.
Pick a name, or leave it blank for a random one.
Drag & drop your file
or browse to choose
Documents, images, web pages and zips · up to 150MB
2What is it?optional
3Who are you sending it to? optional
Two panels showing that a person opening the link gets a page while an img tag fetching the same link gets the image file itself

The same URL answers two different requests differently, and that is the useful part:

<!-- both of these show the image -->
<img src="https://headshot.snapy.page/" alt="Headshot">
<img src="https://headshot.snapy.page/?raw=1" alt="Headshot">
![Headshot](https://headshot.snapy.page/)

What separates the two is the Accept header the request sends, which browsers and <img> tags set differently without anyone having to think about it. ?raw=1 forces the image bytes when you want them in a browser tab as well.

Where you paste it What arrives
An email or a chat message A page showing the image
An <img src> in HTML The image file
Markdown ![](...) The image file
A QR code A page showing the image
?dl=1 on the end A download

Point any image tag or CSS property at the link and it returns the raw file the same way the <img> tag above does. Three ways it drops in unchanged:

<img src="https://headshot.snapy.page/" width="400" height="300" alt="Headshot" loading="lazy">
<a href="https://headshot.snapy.page/"><img src="https://headshot.snapy.page/?raw=1" alt="Headshot"></a>
<style>.hero { background-image: url("https://headshot.snapy.page/?raw=1"); }</style>

Set width and height on the tag by hand. Snapy serves the exact bytes uploaded and never resizes them, so there is no generated thumbnail or srcset to request, and a missing size attribute is what makes the layout jump while the browser works out the image's real dimensions on its own.

One setting quietly breaks every embed above: a password on the link. The password check runs before Snapy decides whether a request is a browser tab or a tag, so an <img> pointed at a password-locked link gets the password form's HTML back instead of the picture, and shows up as a broken image everywhere it is embedded. A link that needs to stay embeddable should carry an expiry date instead, which is checked the same way for every request and does not touch the image tag until the date itself arrives.

A person opening the link counts as one open. A tag fetching the image counts as a download, not an open. That matters if you embed the image on a busy page: the download number climbs with the traffic of the page it sits on, and the open number does not move. Nothing is double counted, and the two are never added together.

One exception worth knowing: if you switch the link to view-only, a cross-origin fetch is refused with a 403, so the link stops working as an embeddable image URL. A person can still open it and look at it. View-only and embedding are a genuine trade-off, not a setting you can have both ways.

Which image formats work?

Formats What happens
Shown in the browser PNG, JPG, JPEG, GIF, WebP, AVIF, BMP, ICO The image appears on the page and the link works in an <img> tag
Hosted, offered as a download HEIC, TIFF, PSD, AI No browser renders these, so the page offers the file instead of displaying it
Refused SVG An SVG opens as a page and can carry script, so it is not accepted

A single file can be up to 150MB, which is roughly six times what email will carry. The file is stored and served exactly as uploaded: nothing is resized, recompressed or stripped.

Drop in more than one and you get a single link with a listing page rather than a link per file. You choose how it opens: a list, small thumbnails, large thumbnails, or a slideshow that advances on its own. Each image inside the bundle keeps its own direct URL, so an <img> tag can point at one picture out of a set.

A password or an expiry date also switches the link out of search: a page that can vanish should not be left in Google's index after it has gone.

Screenshots in a bug report, product photos, design mockups, headshots for a bio, event flyers, a scan of a document, a photo too large for email. If the point is that somebody sees the image exactly as it is, a link beats an attachment: nothing is recompressed on the way and nothing bounces.

Sending a document instead? Turn a PDF into a link. Publishing a page you built? Host an HTML file.

Snapy Pro · unlimited links, and who opened them Refundable within 14 days