Half of What I Save Is Not an Article: PDFs, Videos, and the Plumbing They Need
Bookmark tools are built for articles, and then reality shows up: papers, datasheets, conference talks, a podcast episode.
Detect the type, then act on it
Markwise sniffs what a saved thing actually is at save time and stores that alongside the bookmark, so every surface can render it consistently instead of each screen guessing.
For a PDF that means it renders inline. A saved paper opens and reads in place instead of downloading to a folder you will never open again. The text also gets extracted, so the paper is searchable by what is inside it rather than by its title alone, which is how you find the one that mentioned a specific method three months later.
One detail worth flagging, because it caused a bug: a sniffed content type of text/html carries no useful signal. The server stamps it on every scraped page, including video pages, so the frontend treats it as "no information" and falls back to URL heuristics. A Vimeo page sniffs as HTML and still has to read as a video.
Two things I learned the hard way
Titles that are just identifiers. An arXiv PDF often has no useful title, only an id like 2603.27277v1. A library where half the rows read as random numbers is useless to scan, so when the title looks like a bare identifier the real one gets recovered from the first heading of the extracted text. The heuristic is small and it changes how the whole list feels.
You cannot simply embed an external PDF in a page. Most hosts set frame-blocking headers, or withhold the CORS headers you need, and the frame comes up blank with no error you can catch cleanly. The file has to be proxied through our own origin.
A proxy that fetches arbitrary user-supplied URLs is also a server-side request forgery risk, so it needs guarding rather than just working. Ours checks ownership of the bookmark, validates the URL against internal address ranges so it cannot be pointed at the private network, caps the response size, and only passes through an allowlist of content types. The web app fetches that as a blob and renders it same-origin.
None of this is visible to the user. The whole feature reads as "the PDF just opens", which is the correct outcome and roughly a hundred times more work than an iframe.
What non-article things do you save most, and does your current tool handle them or quietly mangle them?
If yours mangles PDFs, Markwise is free to try.