Skip to content
heic.fyi

Learn

Can a HEIC file contain a virus? What is verified

A HEIC file cannot run itself: it is data, not a program, and an .exe renamed to .heic will not open as a photo. The real risk is narrower. A crafted image can exploit a bug in the software that decodes it, and libheif, libde265, Apple's ImageIO, Android's HEVC decoder and Microsoft's HEIF and HEVC extensions have all had such bugs, found and patched. This page gives the verified cases, what they did and did not allow, how to stay safe, and what we can and cannot promise about our own converter.

By the heic.fyi teamUpdated 19 min read

Key takeaways

  • A HEIC cannot execute by itself. It is parsed by a decoder. Harm needs a memory-safety bug in that decoder, plus a vulnerable, unpatched version of it.
  • Those bugs are real and patched. NVD lists 114 records mentioning libheif or libde265, mostly medium or high severity. Microsoft, Android and Apple have each fixed image or HEVC decoder bugs, and Apple said two ImageIO bugs may have been exploited against specific people.
  • The common HEIC risk is privacy, not malware. A phone photo carries date, device and often GPS coordinates. Anyone you send it to can read them unless you remove them.
  • An online converter is safe from viruses only in a narrow sense. Most upload your photo to a server, so the question is what that service keeps. Ours converts in your browser, and you can check that yourself.
  • We cannot call any decoder 100% safe, ours included. On 12 October 2026 our build ships libheif 1.23.5 and libde265 1.0.15. libheif is one release behind and libde265 is several security releases behind. The stress test below is evidence, not proof.
On this page
  1. Can a HEIC file contain a virus?
  2. Have HEIC and HEVC decoders had real vulnerabilities?
  3. Can a HEIC attachment infect my phone just by arriving?
  4. What can a malicious HEIC do, and what can’t it do?
  5. Is the real HEIC risk privacy rather than malware?
  6. Can renaming a file to .heic hide an .exe or malware?
  7. Are HEIC email attachments dangerous?
  8. How do I stay safe with HEIC files?
  9. Is an online HEIC to JPG converter safe?
  10. How does heic.fyi handle your files, and what can you verify?
  11. How do you check a converter yourself?
  12. How does the converter treat hostile files?
  13. What can’t we promise?

Can a HEIC file contain a virus?

Not in the way an .exe or a macro-enabled document can. A HEIC is a photo container, and opening it means a program reads its bytes and draws a picture. Nothing in the format is executed. A file called photo.heic that is really a program does not become a photo, and a real photo does not become a program.

What can go wrong is the reading. Decoders are programs written for speed, usually in C or C++, that trust numbers inside the file: image sizes, offsets, counts. If a decoder checks one of them badly, a crafted file can make it read or write outside the memory it set aside. That is a memory-safety bug. It usually crashes the program. In the worst case an attacker turns it into code running inside the program that opened the file. It needs a vulnerable version, and vendors patch these when they are found.

What a malicious HEIC file needs before it can do harmA chain of five steps. The file arrives; some software opens or previews it; a decoder parses its bytes; only if that decoder has a memory-safety bug can crafted data go wrong; the usual outcome is a crash and the rare worst case is data read or code run inside that application. Three of the links can be broken: open only expected files, run untrusted files in a sandbox such as a browser tab, and install updates. The file is never run as a program.1. A HEIC file arrivesEmail, message, download, AirDrop, a USB stick.Break it here: open only what you expect.2. Software opens or previews itA viewer, a thumbnail, a chat app, a converter.Break it here: use a sandbox (a browser tab).3. A decoder parses the bytesApple ImageIO, libheif, libde265, Android, Windows.Break it here: install updates (decoder fixes).4. Only if the decoder has a memory-safety bugCrafted sizes or offsets push it past a buffer's end.5. OutcomeUsually a crash. Rarely, code runs inside that app.Not in the chain: the file running as a program.A .heic is opened as an image, never run as code.Renaming an .exe to .heic changes the label, not the file.
What a malicious HEIC needs. Three links can be broken by you: what you open, where you open it, and whether your software is up to date. The file itself is never run.

Have HEIC and HEVC decoders had real vulnerabilities?

Yes. We read each record below on 12 October 2026 (NVD records through its CVE API, vendor pages in a browser) and describe only what the source says. “Patched” means the vendor says a later version fixes it, not that every device has installed it.

Verified examples, by component. Severity scores are the vendor's or NVD's, shown where one exists.
Component and recordWhat it allowed, in plain termsFixed in
libheif (HEIF container): CVE-2026-32740 (opens in a new tab), CVSS 8.8A crafted 1×4 grid of odd-height tiles made the library write 64 attacker-controlled bytes past a buffer. The advisory says that could in principle mean code execution, or a crash. NVD's CISA entry lists exploitation as none.1.22.0
libheif: CVE-2026-84383 (opens in a new tab), CVSS 9.8Nested references in a crafted HEIF, HEIC or AVIF made decoding allocate an alpha plane at the wrong bit depth and write past it.1.23.2
libde265 (HEVC decoder used by libheif): CVE-2026-33165 (opens in a new tab), CVSS 5.0A crafted HEVC bitstream made the decoder write two bytes past a heap allocation.1.0.17
libde265: CVE-2026-49346 (opens in a new tab), CVSS 7.1Large declared dimensions at 16-bit depth made an allocation size wrap to a tiny value, then a much larger write followed.1.1.0
Apple ImageIO: CVE-2025-43300, in the iOS 18.6.2 notes (opens in a new tab)“Processing a malicious image file may result in memory corruption.” Apple was aware of a report of use in an “extremely sophisticated attack against specific targeted individuals”. The notes do not name the format.iOS 18.6.2, 20 Aug 2025
Apple ImageIO: CVE-2023-41064, in the iOS 16.6.1 notes (opens in a new tab)A buffer overflow on a maliciously crafted image “may lead to arbitrary code execution”; possible active exploitation; credited to Citizen Lab. The notes do not name the format.iOS 16.6.1, 7 Sep 2023
Android HEIF decoder: CVE-2021-39804 (opens in a new tab), April 2022 bulletin (opens in a new tab)A missing null check in HeifDecoderImpl could crash the file picker on a crafted file. A denial of service, rated High, no code execution.Patch level 2022-04-01
Android HEVC decoder (libhevc): CVE-2017-0539 (opens in a new tab), April 2017 bulletin (opens in a new tab)Memory corruption in Mediaserver on “a specially crafted file”, rated Critical. A bug in the HEVC codec, not specific to HEIC.Patch level 2017-04-01
Windows HEIF Image Extension: CVE-2022-24457 (opens in a new tab), CVSS 7.8Microsoft: exploitable “by convincing a victim to download and open a specially crafted file”. At publication: not publicly disclosed, not exploited.App 1.0.43012.0 (Store auto-updates)
Windows HEVC Video Extensions: CVE-2023-38170 (opens in a new tab)The same class of bug in the codec package Windows uses to open HEIC.2.0.61933.0 (Store) or 2.0.61931.0 (preinstalled)

Microsoft's titles say “Remote Code Execution”, but its own FAQ explains that “Remote” is where the attacker is, and that the attack is carried out locally. We did not find a Windows or Apple advisory that names HEIC; the Apple and Android entries show image and HEVC decoders, which HEIC depends on, not HEIC files specifically.

NVD records mentioning libheif and libde265, by yearCounts of National Vulnerability Database records that mention each library, by publication year, read on 12 October 2026 (114 distinct records in total). 2019: libheif 1, libde265 0; 2020: libheif 0, libde265 0; 2021: libheif 3, libde265 13; 2022: libheif 0, libde265 21; 2023: libheif 6, libde265 18; 2024: libheif 2, libde265 3; 2025: libheif 4, libde265 1; 2026: libheif 32, libde265 11. The counts include crashes found by fuzzing and records about other software that names the library, and 2026 is a partial year.libheif (HEIF container)libde265 (HEVC)20191020200020213132022021202361820242320254120263211NVD keyword matches by publication year; 2026 runs to 12 October.
How often records appear for two open-source libraries that decode HEIC. A count of keyword matches in the National Vulnerability Database on 12 October 2026: 114 distinct records, with base scores of 1 critical, 39 high, 68 medium and 6 low. Not a count of exploited bugs, and not a measure of how safe either library is: records arrive in waves.

Two things stand out. Almost every entry needed someone to hand the program a crafted file, and the fix was a vendor update. And only two of the records above, both in Apple's ImageIO, came with a vendor statement that they may have been used in real attacks, in each case against specific people. We found no source saying HEIC files have been used in mass attacks. Absence in what we read is not proof it never happened.

Can a HEIC attachment infect my phone just by arriving?

In principle, yes, for the kind of bug above. Messaging apps decode images automatically to show a preview, so the file does not need to be tapped. Citizen Lab's 2023 report on BLASTPASS described an exploit chain delivered over iMessage as PassKit attachments containing malicious images, which compromised a device “without any interaction from the victim”. Apple fixed the image bug (CVE-2023-41064). Neither Citizen Lab nor Apple names the image format, so this shows the risk class and does not show a HEIC attack.

These were attacks on a few people, not a campaign against everyone. Apple's own page says Lockdown Mode is “designed for the very few individuals” who may be targeted, blocks most message attachment types, and that “most people are never targeted by attacks of this nature”. If you are at risk of that kind of attack (a journalist, an activist, a person under surveillance), Lockdown Mode exists for you. For everyone else the sensible defence is keeping the phone updated.

What can a malicious HEIC do, and what can’t it do?

  • Can: crash the app that opens it, a thumbnail generator or a file picker. This is the usual outcome of a decoder bug, and CVE-2021-39804 above is an example.
  • Can, if the decoder has a serious bug and is not patched: run attacker code with the permissions of the program that decoded it. That is the program, not the whole computer, and modern phones add further sandboxing.
  • Cannot: start itself. Double-clicking a HEIC asks an image viewer to draw it.
  • Cannot: do harm to software that already includes the fix.
  • Cannot: hide a runnable program that the operating system will launch as a photo, because the extension only chooses which app opens it.

Is the real HEIC risk privacy rather than malware?

For most people, yes. A photo from a phone normally carries Exif metadata: when it was taken, the device, lens and settings, and, if Location Services was on, GPS coordinates. Apple's iPhone guide says plainly that sharing includes metadata such as location. That data is ordinary and intended, which is why nothing warns you. Anyone who receives the original file can read it.

  • See what a file reveals with the EXIF and GPS viewer. It reads the file in your browser.
  • Remove the location with Remove GPS, or all metadata with Remove HEIC metadata, before posting or sending a photo to someone you do not know.
  • Converting to JPG does not by itself remove location. Our HEIC to JPG keeps date and camera details by default but leaves the location out unless you tick the box. In the run we did for this page, a sample with a GPS position converted to “Kept: date taken, camera · Location removed”.

Can renaming a file to .heic hide an .exe or malware?

Renaming changes a label, nothing else. We tested what our converter does with files that are not HEIC at all, each given a .heic name: a Windows executable header (“MZ”), an ELF header, a shell script, text, random bytes, zeros, a PDF, a ZIP, a JPEG and a PNG signature. None was opened as a photo, and none ran. Seven were refused as “not a HEIC/HEIF image”, and the JPEG, PDF and PNG stub as a file type the tool does not read. Two more, with a genuine HEIC header followed by junk, were refused as unreadable containers. This is what detecting a file by its contents, not its extension, looks like.

The reverse also happens: a real HEIC saved as .jpg, or a camera file with an unfamiliar extension. To see what a file really is, use the HEIC file checker, which reads the signature rather than the name, or the health check to find out whether it is damaged. Our HEIC vs HEIF page explains the brands inside the file.

Bytes added after the end of a valid picture are a different case. We appended a random megabyte, a script and an executable header to a valid HEIC. The converter decoded the picture, and the JPG it produced contained none of the appended bytes. The original file still carries them, but a decoder does not run them; they matter only to another program that is told to look.

Are HEIC email attachments dangerous?

The attachment is rarely the risky part. The message around it is. CISA says an unsolicited email asking you to download and open an attachment “is a common delivery mechanism for malware” and advises verifying a request by contacting the company directly using details you already have, not those in the message. The UK's NCSC says malware is often hidden in phishing emails or the sites they link to, and that well-set-up devices can stop it installing even after a click. We did not find a source documenting a campaign that uses HEIC attachments specifically.

  • A photo you did not expect, from someone you do not know, with a prompt to log in, scan a code or reply urgently, is a phishing sign whatever the file type.
  • A friend's photo arriving as .heic is normal: it is what iPhones save. A “.heic” that asks to be run, enabled or installed is not.
  • If you clicked something, say so and report it. The NCSC's advice is that reporting is free and lets it take down scam addresses and sites.

How do I stay safe with HEIC files?

  1. 01

    Keep the software that opens images up to date

    That is the OS (iOS, macOS, Android, Windows), your browser, and your photo apps. Decoder fixes ship in them. On Windows the HEIF Image Extension and HEVC Video Extensions are Store apps; Microsoft says the Store updates the first automatically. You can check the version with Get-AppxPackage -Name Microsoft.HEIFImageExtension in PowerShell.

  2. 02

    Do not open files you did not expect

    A photo from a stranger or an unexpected “invoice.heic” gets no benefit of the doubt. Delete it, or confirm with the sender through another channel.

  3. 03

    Open untrusted files somewhere contained

    A browser tab is a sandbox that a desktop viewer is not, and a converter that runs in the browser keeps the file away from your photo library. This lowers the damage a bug can do. It does not make a bug impossible.

  4. 04

    Scan, but know what scanning catches

    Antivirus finds known malware. We found no source showing it reliably detects a crafted image aimed at a fresh decoder bug, so do not treat a clean scan as a guarantee. Updates are the control that works.

  5. 05

    Strip metadata before sharing

    Use Remove GPS, or check first with the EXIF viewer.

  6. 06

    If you may be a target, use Lockdown Mode

    Apple designed it for the very few people who may be personally targeted. It limits message attachments and other features.

Is an online HEIC to JPG converter safe?

It depends on where the conversion runs, and that is not something you can see from the page. Many converters upload your file to a server, decode it there and send a JPG back. That is not unsafe in the sense of a virus, but it means a copy of your photo, with its location data, passes through someone else's computers. Whether that matters depends on the photo, and on how far you trust the service's promises. We read what four well-known services say about their own handling:

What each service says about its own conversion, read on 12 October 2026
ServiceWhere it says conversion happensRetention it states
Convertio (opens in a new tab)“Conversion happens entirely on remote servers.”Uploaded HEIC deleted immediately after conversion; JPG results purged within 24 hours.
FreeConvert (opens in a new tab)Files are uploaded over HTTPS.Deleted automatically after 8 hours.
Zamzar (opens in a new tab)“Upload your file ... let our servers do the rest.”Free converted files kept for up to 24 hours; paying users' files until they delete them. Originals not addressed.
CloudConvert (opens in a new tab)Files are “transferred to and temporarily stored on CloudConvert's servers.”Deleted at the latest after 24 hours; processed by machine; encryption at rest not stated.

These are the services' own statements, quoted from their pages. We did not audit any of them and have no evidence that any breaks its promise. They are mainstream services; the point is that you are relying on the promise. If a policy does not say whether files are uploaded, how long they are kept, or who can read them, treat the answer as unknown.

A converter that works in your browser has a different risk profile, because the photo never leaves the device. That is an architecture claim you can test, which is the next section. A separate risk is the website itself: a look-alike domain, a pop-up asking you to install software, or a “free converter” program to download. A photo you upload to a website does not infect you; an installer you run can.

  • Prefer a converter that says conversion happens in your browser, then verify that (below).
  • Read the privacy policy for three things: is the file uploaded, how long is it kept, who can access it.
  • Never install software to convert a photo when your operating system already does it. See HEIC to JPG on a Mac and opening HEIC on Windows.
  • For photos with faces, documents or a home address, use an offline route or remove the metadata first.

How does heic.fyi handle your files, and what can you verify?

heic.fyi's tools decode HEIC with libheif compiled to WebAssembly, running in a Web Worker in your browser. The privacy page says files are read and transformed on your device and are not uploaded to a server for processing. The security page lists the controls. Here is what we checked ourselves on 12 October 2026, against this site's code and the live site.

Where your photo goes: upload converter versus converting in the browserTop lane, an upload converter: your photo, with any location data, travels over the internet to the service's server, which decodes it, keeps it for a period the service states, and sends a JPG back. Bottom lane, a browser-based converter such as heic.fyi: the page and the decoder are downloaded to your browser, then a Web Worker decodes the photo in your device's memory and the JPG is made there; the photo is not sent anywhere. Separately, the page's analytics tag reports the page address to Google Analytics, not the photo.Upload converterYour devicephoto + GPSTheir serverdecodes, stores a whileJPGcomes backYou rely on the service's retention and security promises.Converting in the browser (heic.fyi)Your devicePage + decoderdownloaded once (GET);carries no photoWeb Worker (WASM)decodes in local memory;JPG made on the deviceAnalytics tagpage address, not the photoCheck it yourself: browserNetwork tab, or go offline.
Where the photo goes. In the browser route the page and decoder are downloaded, and the photo is read and converted in the tab. The analytics tag in the production build reports the page address to Google Analytics; the code comment says file contents, file names, Exif and GPS are never sent, and the privacy page says the same.
What we verified, and how
ClaimWhat we foundHow
No upload while convertingOn the development server, across 160 conversions, every request was a GET to our own origin for the worker and WebAssembly files; none was a POST or PUT or carried a body. On the production build the only external requests were Google Analytics page_view events with no body. We converted a file with a distinctive name, a GPS position and a capture date and found none of them in any request.Playwright logging every request made by the page and its workers.
Works with no networkAfter one file had converted, we switched the browser offline and converted another with an embedded GPS position. It succeeded with zero requests. Going offline before any file had been converted failed, because the decoder is fetched on first use.Playwright offline mode.
Decoding in a workerThe decode runs in heic.worker.ts; the main thread receives pixels or a stable error code, never library error text.Source code.
The worker cannot reach other sitesThe live worker script is served with default-src 'none'; connect-src 'self' blob: data:, and the page's policy allows connections to our own origin plus Google Analytics hosts only.HTTP response headers of heic.fyi, read 12 October 2026.
File type is read from contentsdetectFormat reads the ftyp brands in the first bytes and compares them with the extension only to warn about a mismatch.Source code and the renamed-file tests above.
Outputs are re-checkedA converted JPG or PNG is re-read (signature and a decode through the browser) before it is offered; a HEIC we encode is decoded again in the worker.Source code.

The offline test and the first network test ran against the development server, where the Google Analytics tag is switched off; the hostile-file run and the file-name check ran against the production build, where that tag loads, as the privacy page discloses. Response headers were read from the live site. We did not test the live site's uploads end to end.

A Web Worker is not, by itself, a network barrier: MDN notes workers can make requests with fetch. The barrier is the policy header above. WebAssembly adds a sandbox: its documentation says a module runs separated from the host and cannot escape except through approved APIs, and that direct code injection is not possible. It also says bounds checking is “at the region level”, so an overflow can still overwrite adjacent data in the module's own memory. In plain terms, a decoder bug here would be contained to the browser tab's sandbox, but it could still corrupt what the decoder is working on.

How do you check a converter yourself?

  1. 01

    Open the browser's developer tools on the converter page

    In Chrome, Edge or Firefox press F12 and choose the Network tab. In Safari, enable the Develop menu in Settings first.

  2. 02

    Clear the log, then convert a photo

    Look for requests whose method is POST or PUT, or whose size is close to your photo's. A converter that uploads will show one. Requests for scripts, WebAssembly files and the page itself are ordinary downloads.

  3. 03

    Try the offline test

    Convert one file so the converter has loaded, switch Wi-Fi off (or set the Network tab to Offline), then convert another. A tool that processes on your device keeps working. One that needs a server stops.

  4. 04

    Remember what it cannot show

    The Network tab shows what the page sent during your test. It does not prove what a site will do next week, and a page could keep a copy for later. Reading the policy and choosing sites you trust still matter.

Try it here

Check what a file really is

Drop in a file. It is read in your browser and not uploaded, which you can confirm with the steps above.

How does the converter treat hostile files?

Before a file is decoded we apply limits, and every one of them fails with a clear message rather than running to exhaustion. These are the values in the code.

The checks a file passes through in the heic.fyi converterFive stages in order. One: files over 100 megabytes are refused. Two: the file's real type is read from its contents, not its extension. Three: an image whose header declares more than 100 megapixels is refused before decoding. Four: decoding happens in a Web Worker with a 60 second limit, and a worker that gets stuck is terminated. Five: the converted file is re-read and checked before it is offered for download. Each refusal returns a stable error code, never raw library text.1Size checkFile over 100 MB is refused before it is read.2Signature checkThe file's own ftyp brand decides, never the extension.3Declared size checkMore than 100 megapixels is refused before decoding.4Decode in a Web Worker60 s time limit; a stuck worker is thrown away.5Output checkThe JPG or PNG is re-read before it is offered.
The checks a file passes through in the converter, from the code in src/lib/engine. Limits: 100 MB per file, 100 megapixels, 64 images per file, 50 files or 500 MB per batch, 60 s to decode and 180 s to encode.

The libheif build we ship has its own limits as well, and we saw them working. For example, it refused one damaged file with “Number of extents in iloc box (65535) exceeds security limit (32)” and another because a box claimed a size of 2^62 bytes. Its default cap on image size is 2^30 pixels (about one gigapixel), which we read from the module; our own cap is ten times lower. Our own HEIF parser, used by the Inspector and the metadata tools, is TypeScript and bounded: at most 4,096 boxes, nesting depth 8, 4,096 items and 2,048 properties. A bug in JavaScript can throw an error or waste time but cannot corrupt memory the way C code can.

To see how this behaves, we built 159 hostile files from our own CC0 sample files and ran each through the real converter page in headless Chromium: truncations, random damage in the metadata, parameter sets and pixel data, forged size and offset fields, files of the wrong type, and a 101 MB file. They are random damage and forged numbers, not working exploits. The corpus script is scripts/benchmarks/heic-security-corpus.py and the runner is heic-security-stress.mjs.

159 hostile files through the heic.fyi production build, 12 October 2026
GroupFilesConvertedRefused with a message
Truncated at 0 bytes, 1, 11 and 5% to 95%22022
Random bytes changed in the container metadata30426
Random bytes changed in the HEVC parameter sets401723
Random bytes changed in the pixel data30300
Forged sizes, offsets, counts and dimensions21318
Not a HEIC at all (executable, script, text, zeros, JPEG, PDF, ZIP)12012
Valid HEIC with extra bytes appended330
101 MB file101
Total15957102

“Converted” means a picture was produced, not that it looks right: damaged pixel data decodes to a garbled or partial image. Every refusal was one of the converter's named messages. Six were “Ran out of resources”; we re-read those files with the bundled libheif, and each was libheif's own “Security limit exceeded” error, not an out-of-memory fault. Run on the production build with libheif 1.23.5; on 1.23.2 the same corpus gave 58 converted and five of those errors, so the newer libheif refuses one more forged file.

0
tab crashes, hangs or uncaught page errors

across 159 files

0
requests carrying file data

only Google Analytics page_view events, no body

0.9 s
slowest file

median 0.13 s; 101 MB file refused in 0.2 s

1
known-good photo converted afterwards

the worker was still healthy

What this does not show. The damage was random or hand-forged, not coverage-guided fuzzing, so it would not find a bug that needs a precise bitstream. We did not try the proofs of concept behind the CVEs above, which we did not have. It tested the HEIC to JPG route and the Chromium engine. It is useful evidence that failures are clean and bounded, and it is not a proof of safety.

What can’t we promise?

We cannot say our converter is 100% safe, and nobody can say it of a decoder. Here is the specific position as of 12 October 2026, so you can judge it. We read the versions from the WebAssembly module itself: our build uses libheif 1.23.5 and libde265 1.0.15. We updated libheif from 1.23.2 on the same day after checking that decoded pixels were unchanged on our test files. The libheif project's releases page now lists 1.23.6, so we are one release behind there. libde265's latest release is 1.1.3, and that is the larger gap.

Fixes for the HEVC decoder (libde265) that postdate the version we ship
RecordWhat it isFixed in
CVE-2026-33165 (opens in a new tab)Out-of-bounds heap write after an SPS change1.0.17
CVE-2026-45383 (opens in a new tab)Heap out-of-bounds read in wavefront slice decoding1.0.19
CVE-2026-49346 (opens in a new tab)Integer overflow in image buffer allocation1.1.0 (also added image-size and memory limits)
CVE-2026-54240 (opens in a new tab)Signed 32-bit overflow in pixel offsets1.1.1
Two use-after-free bugs, per the release notesOne in multi-threaded decoding, one after a reset1.1.2

From libde265's releases page and the NVD records, read 12 October 2026. The newest libheif-js on npm, 1.23.5, is what we ship, and it still bundles libde265 1.0.15 (we unpacked it and read the version), so updating that package alone does not close these. Closing them needs a rebuild of the WebAssembly decoder with a newer libde265, which we have not done yet.

What that means. These are bugs in code that parses an untrusted HEVC stream, which is what a HEIC contains, so a crafted file aimed at one of them could in principle crash our decoder or corrupt its memory. It runs in a WebAssembly sandbox inside a worker whose script can connect only to our own origin, which limits what a bug can do and where data could go. It does not make a bug impossible, and the sandbox is not a reason to be casual. If your photo is sensitive and its source is not trusted, a tool you have no reason to doubt does not change the first rule: update your own software and do not open files you do not trust.

Frequently asked questions

Try it yourself

Related reading

Sources

How we research and correct: editorial policy.

Written by the heic.fyi team · Last updated: · Spotted an error? Tell us.