Extract images from MHTML, on your device. Nothing ever uploads.

Drop up to 20 saved pages (.mhtml or .mht) below — get every embedded image out byte-for-byte, exactly as stored, in the order it appears on the page. Download each image, or all of them as a ZIP.

  • Your file data never leaves the device
  • MHTML + MHT, page order
  • Batch up to 20 saved pages + ZIP
  • Original filenames, sequential ZIP names

Extract images from MHTML saved pages

Add your MHTML saved pages

Drag & drop MHTML saved pages here

or browse your files · you can also paste from clipboard (Ctrl+V)

An MHTML file is a plain-text MIME multipart/related message — read on this device with a pure-JavaScript parser, images returned in the order they appear on the saved page, labelled with their original filename, and the root HTML, stylesheets, scripts and fonts skipped. Every image downloads byte-for-byte, exactly as stored — no re-encoding, no quality loss. EMF, WMF, HEIC and TIFF images cannot be previewed in most browsers, so they show a “preview unavailable” note — they still download byte-for-byte. SVG images are extracted as-is; their preview may not render in some browsers. A nested multipart part is unpacked one level deep; deeper nesting is listed as skipped. Plain HTML files, EML email files, PDFs and ZIPs renamed .mhtml are refused with a pointer at the right tool or fix; .mht files extract the same way as .mhtml. Images referenced only in CSS (background images) and data: URIs inline in the HTML are not extracted as separate images.

    No files yet. Everything stays on this device. Downloads start instantly.

    Privacy you can verify, not just trust

    Most online MHTML tools upload your saved page to their servers first — and some keep a download link live for 24 hours, or cap free use at a few files a month. This one can't: each image is pulled out of your saved page entirely in your browser. Your file data never leaves the device — the only third-party requests are the site's own analytics, which count page views — and it uploads nothing, ever. There is no file fetched after load for the extraction itself. Don't take our word for it:

    New cross-origin requests during use: 0
    1. Press F12 to open developer tools, then the Network tab.
    2. Extract any saved page above. Watch: apart from the site's analytics, nothing new is requested — no uploads, and no file data ever leaves your device.
    3. Extra credit: disconnect your internet after this page loads — extraction still works.

    How to extract images from an MHTML file without uploading it

    Every "free" online MHTML tool you have used uploads your saved page to a company server, extracts it there, and — in several documented cases — keeps a copy or a live download link for a day, or limits free users to a few files a month. For pages you saved, were sent in confidence, or simply would not post publicly, that is an unnecessary risk. The safer approach is to extract the file where it already is: on your own device.

    This tool does exactly that. When you drop an MHTML file here, your browser:

    1. Checks the file is really an MHTML saved page — by its magic bytes, not its name — so a JPEG renamed .mhtml is refused with a clear message, a ZIP renamed .mhtml is refused with a pointer at the Extract Images from CBR tool, a PDF renamed .mhtml is refused with a pointer at the Extract Images from PDF tool, a Word document, spreadsheet or PowerPoint file renamed .mhtml is refused with a pointer at the matching Office extractor, a plain HTML file is refused with instructions to re-save the page as a single file, and an EML email file is refused with an explanation that it is an email, not a saved page. A real MHTML file saved with the wrong extension still extracts, and both .mhtml and .mht files are read.
    2. Reads the saved page’s own structure and pulls the images in page order — the root HTML part lists each picture through its img src and srcset references, in document order, so the image at the top of the page comes before the one at the bottom even when the MIME parts list them the other way round, and every image is labelled with its original filename. Image parts nothing references are listed last as Unreferenced. The root HTML, stylesheets, scripts and fonts are skipped, and everything skipped is listed on the saved-page card.
    3. Hands you the originals — download one image and it keeps its original filename; download the saved page as a ZIP and every image is renamed image-01, image-02 and so on in page order. Nothing is re-encoded, rasterized or resized at any point: the bytes you download are the bytes that were stored in the saved page.

    What makes this extractor different

    Most pages that top the results for this search convert on a server, or handle one file at a time with no previews — instead of handing you the images themselves. The desktop options are installs, not browser tools. This page does the simpler job, and does it fully in the browser: no upload, no monthly cap, no account, no 5 MB limit, a batch of 20 saved pages, MHTML and MHT, page order with every image labelled by filename, unreferenced images labelled, original filenames on per-image downloads, sequential names in the ZIP, and a live network-request counter so you can verify the privacy claim yourself.

    Honest limitations

    Verbatim means verbatim — no quality recovery

    JPEG throws away detail when it compresses, and extracting cannot put it back. But nothing is lost either: the source bytes download unchanged, in every format. There is no quality setting because there is nothing to re-encode.

    Metadata stays in the files

    Extraction copies the stored bytes, so EXIF and other metadata inside each image is kept — including location data, if the image has any. The saved page’s own HTML and stylesheets are skipped, and listed on the card, but the images themselves are untouched. Strip metadata yourself before sharing an image publicly.

    EMF and WMF preview

    EMF and WMF images are extracted as-is, exactly as stored. Most browsers cannot display them, so the page shows a note instead of a broken image in that case, with the format and size shown. The file itself still downloads byte-for-byte and opens in LibreOffice or any viewer that supports the format.

    The saved page is not re-rendered

    An MHTML file is a whole web page — HTML, styles and scripts as well as images — and this tool does not render it. Only embedded images come out, byte-for-byte; the page itself stays in the .mhtml file. To turn a whole page into an image, screenshot it or print it to PDF from the browser instead.

    Plain HTML and EML files are refused

    A plain HTML file has no multipart body and no embedded image parts, so there is nothing to extract — save the page again in Chrome or Edge with “Save page as → Webpage, Single File”. An EML file is an email message (message/rfc822), not a saved page — open it in your mail app instead.

    No text, linked images or data: URIs

    This tool pulls out images only: it does not extract the saved page’s text, it does not download pictures linked from the web (only embedded images have bytes inside the file), and it does not extract data: URIs as separate images — a data: URI is inline in the HTML itself, not a separate part. Images referenced only in CSS (background images) are styles, not <img> images, so they are not listed either.

    Page order, when the saved page cooperates

    Page order comes from the root HTML part’s img src and srcset references, in document order. If a saved page has no root HTML part, the page falls back to part order and says so on the card — the images still come out byte-for-byte.

    Nested parts, one level deep

    A MIME part that is itself a multipart message is unpacked once; deeper nesting is listed on the card as skipped. Chrome and Edge save pages flat, so nesting is rare in practice — a nested part is usually a forwarded message saved inside the page.

    Frequently asked questions

    Do my saved pages upload anywhere?

    No. Your MHTML files are extracted entirely in your browser — your file data never leaves the device, and the only third-party requests are the site’s own analytics, which count page views. You can verify it yourself with the network-request counter in the privacy section below the extractor.

    What is the difference between MHTML and MHT?

    Nothing that matters here: MHTML and MHT are the same format — a MIME multipart/related message holding a saved web page and its images. Chrome and Edge save pages as .mhtml; some tools and older browsers use .mht. This page reads both exactly the same way, in page order, byte-for-byte.

    Is an MHTML file the same as an EML email file?

    No. An EML file is a single email message (message/rfc822) — it has no multipart/related body and no saved-page parts, so this page refuses it and says so. An MHTML file is a saved web page: a multipart/related message whose first part is the page’s HTML and whose later parts are its images. If your file ends in .eml, it is an email — open it in your mail app instead.

    How are the images stored inside an MHTML file — base64 or quoted-printable?

    Usually base64: each image part carries its bytes as base64 text, and this page decodes it back to the original bytes. Some parts use quoted-printable instead, and those decode the same way. Either way the downloaded image is byte-for-byte the original — nothing is re-encoded, and there is no quality setting because there is nothing to re-encode.

    Are the images re-encoded, or do I get the originals?

    You get the originals. Every image downloads byte-for-byte exactly as stored in the saved page — no re-encoding, no rasterization, no quality setting, no quality loss. A JPEG that was compressed when the page was saved stays exactly that JPEG; nothing is lost, and nothing can be recovered either. Per-image downloads keep the original filename; ZIP downloads use sequential names (image-01.jpg, image-02.jpg, …) in page order.

    What happens to the CSS, JavaScript and fonts in the saved page?

    They are listed on the file card as skipped, and nothing is extracted from them. This tool pulls out images only: it does not re-render the saved page, it does not run its scripts, and it does not extract its text. The words and the styling stay in the .mhtml file.

    Does extraction keep metadata like EXIF location data?

    Yes. Extraction is verbatim, so EXIF and other metadata inside each image is kept — including location data, if the image has any. The saved page’s own HTML and stylesheets are skipped and listed on the card, but the images themselves are untouched. Strip metadata yourself before sharing an image publicly.

    What should I do with a DOCX, XLSX or PPTX file?

    Those are ZIP archives, not MHTML files, so this page refuses them. For a Word document, use the Extract Images from DOCX tool; for a spreadsheet, use the Extract Images from XLSX tool — both read Office files the same way this page reads saved pages. For a PowerPoint (.pptx), save it as .odp in LibreOffice Impress and extract that with the Extract Images from ODP tool.

    My browser downloaded the page as a .zip, or my .mhtml file is really a .zip — what now?

    A file renamed .mhtml is refused by its magic bytes, not its name: a ZIP renamed .mhtml points at the Extract Images from CBR tool, which reads ZIP archives of page images the same way this page reads saved pages. To get a real MHTML file, save the page again in Chrome or Edge with “Save page as → Webpage, Single File”.