Updated

Save a webpage as Markdown

Saving is the step after a clean conversion. You already have Markdown in a preview. Now you need it somewhere that survives the tab: the clipboard, a .md file, or a ZIP that also holds the images. WebInk offers all three. They are not interchangeable, and the web tools name files differently from the extension.

Convert first, using the path that can see the page. That choice is covered in convert a webpage to Markdown. This page starts once the preview looks right.

Three ways to keep it

Copy. Use this when Obsidian, Notion, GitHub, or a chat box is already open. Nothing is written to disk. Image links stay as remote URLs. If you close the chat without saving, the capture is gone.

Single-file download. You get one .md file. On the web tools it is the download button after a conversion. In the extension it is Download .md in the download menu. Images remain links to the network. The note is portable as text. It is not a complete offline copy of the figures.

ZIP from the extension. Download .zip packs the Markdown and the remote images it could fetch. The web tools do not build this archive. The layout is also described on the ZIP export page. Plan information for the product lives on Pricing.

How the file is named

The URL tool and the HTML tool share one downloader. The title is lowercased, characters other than letters and digits become hyphens, the name is trimmed, and it is cut to 60 characters. The file ends in .md. An empty title becomes converted.md.

The extension’s single-file download is different. It starts from the page title, replaces spaces with underscores, strips characters that are unsafe in filenames, and appends .md if needed. An empty result becomes converted_content.md. Case is preserved. “API Design Notes” does not become a slug.

The ZIP uses the page title as given: the archive is title.zip, and the Markdown inside is title.md, falling back to converted_content when there is no title. Do not expect the same slug you saw from the web tool.

What the ZIP contains

Remote Markdown images are downloaded together. Each successful image is stored under images/ with a file name taken from the URL, plus an extension when the URL did not have one. Duplicate names get a numeric suffix. The Markdown is rewritten so a successful image points at images/<file>.

If a download fails, that image keeps its original URL. You are not left with a relative link to a file the zip does not contain. Data-URL images are skipped. They are already inline, and they are not fetched as remote files.

A page with no remote images still produces a zip. It contains only the Markdown file. Scroll the source page to the bottom before you convert when figures load as you scroll. The extension can only package images that are already in the document.

Put metadata in the file before you save

A downloaded body is just the article. If you want the source URL and a title in YAML every time, apply a template before you copy or download. The template feature lists the fields. For a vault, that front matter is what you will search later. WebInk still does not create the note inside Obsidian. You move the file. The Obsidian use case explains how that differs from Obsidian Web Clipper.

A save checklist

  • The preview title matches the article.
  • Lazy images were on screen before you converted.
  • You picked copy, one .md file, or a ZIP on purpose.
  • You know which download you used, so you can find the file in Downloads.
  • Signed URLs and tracking parameters are gone before the file lands in a shared repo.

Developers who want the same text from a script, without a browser download, should use the API and write the response to disk themselves. That path does not build this ZIP.

Filenames on one imaginary article

Take a page titled “API Design Notes”. The names below are what these downloads produce. Your browser may still adjust a download if the operating system rejects a character. The ZIP download does not apply the single-file name cleanup.

  • Web tools: api-design-notes.md. The title is lowercased, non-alphanumeric runs become a single hyphen, leading and trailing hyphens are removed, and the result is cut at 60 characters. An empty title becomes converted.md.
  • Extension Download .md: API_Design_Notes.md. Spaces become underscores, / \ ? % * : | " < > are removed, and .md is appended if it is missing. An empty name becomes converted_content.md.
  • Extension Download .zip: the archive is the title plus .zip, and the Markdown inside is the title plus .md. With no title, both fall back to converted_content. Spaces in the title stay spaces.

The same title can therefore land in Downloads three different ways if you try all three buttons. Pick one download per capture so you are not hunting for a hyphenated name and an underscored name of the same essay.

How a successful image is rewritten

Download .zip looks for Markdown images that are not data URLs. It fetches each distinct URL once, with a 30 second limit per image. The file name comes from the last segment of the URL path. Query strings are dropped. Characters that are unsafe in a file name are stripped. If the segment has no extension, one is added from the response content type (png, jpg, gif, webp, svg, bmp, ico, avif), and an unknown type gets .png. A second image that would reuse the same file name gets a numeric suffix.

Before a successful fetch, the note might say:

![Architecture](https://cdn.example.com/media/architecture.png?w=1200)

After that image is stored, the note inside the zip says:

![Architecture](images/architecture.png)

The alt text is kept. The zip contains title.md and images/architecture.png side by side. If the fetch returns an HTTP error or times out, that image is left out and the original Markdown line stays. The success notice is “Downloaded successfully!” when every remote image worked or when there were no remote images. When some failed, the notice is “Downloaded! N image(s) failed, original URLs kept.” The N is the count of distinct URLs that failed, not a second copy of a URL that appeared twice. If the archive cannot be built, the notice is “Failed to create zip file.”

Data-URL images are skipped on purpose. They are already inline, and they are not written into images/. A page whose figures are still loading will not include those figures. Scroll until they are in the document, convert again, then download.

Where to put the files

For a vault, unzip so the Markdown file and the images folder remain siblings. A link images/architecture.png resolves from the note’s directory. Moving only the .md into another folder breaks the figures. Obsidian renders that standard image syntax. WebInk does not rewrite it into a wikilink. The Obsidian use case is the folder layout in more detail.

For Git, a single .md with remote image URLs is often the right commit, because the diff stays text. A ZIP’s image bytes belong in the repo only when you intend to vendor those files. Delete signed query parameters in the preview before either download if the URL grants access.

Choose the template before you download

The extension download saves the templated text you see in the preview. The Default template is {{markdown}} and nothing else. Basic Frontmatter wraps the body like this:

---
title: {{title}}
url: {{url}}
publishedTime: {{publishedTime}}
---

{{markdown}}

Edit it to title: "{{title}}" when titles on that site contain colons. The converter will not add the quotes for you. Other fields you can place yourself are {{excerpt}}, {{byline}}, {{siteName}}, and {{toc}}. The templates page lists them. The web tools do not apply these extension templates. Their download is the converted body, so add a source line yourself if the file must stay citable.

Table of contents text is included when you turn that on, or when the template contains {{toc}}. The generated list is a “Table of Contents” heading plus links to heading anchors. It is optional. A short post does not need it.

FAQ

Which download should I use for a text-only note?

Copy, or the single .md download. On the web tools that button slugifies the title. In the extension it is Download .md, which underscores spaces and strips characters that are unsafe in file names. Image links stay remote. Choose Download .zip only when you need the image files themselves.

What is inside the ZIP when an image fails?

The extension still saves the archive. Successful images go under images/ and their Markdown links are rewritten to images/<file>. A failed fetch keeps the original URL in the Markdown, so you do not get a relative path to a missing file. The toast reports how many image downloads failed. If the archive cannot be built at all, the toast says the zip file failed.

Does the saved file include YAML front matter?

Only if the selected template writes it. The Default template is the Markdown body alone. Basic Frontmatter adds title, url, and publishedTime. Those values are substituted as written, without automatic quoting, so a colon in the title can break the YAML until you put quotes around {{title}} in the template.

Why is the title missing from the top of an extension file?

The extension converter removes a leading # title line from the body. Templates are expected to print {{title}} when you want it. The Default template does not. Pick Basic Frontmatter or a template that starts with a heading. The HTML paste tool puts a leading H1 back. The URL tool follows the API converter, which is a different path.

Can I save directly into Notion or Obsidian?

A Notion export button is not currently available in the side panel. WebInk also does not create a note inside an Obsidian vault. Copy into the app that is already open, or download a file and move it. The Obsidian use case describes where to unzip so relative image links keep working.

More from WebInk