All original content is created in Ukrainian. Not all content has been translated yet. Some posts may only be available in Ukrainian.Learn more

What is the HEIC format and why simply renaming it to .jpg is a bad idea

Post cover: What is the HEIC format and why simply renaming it to .jpg is a bad idea
Table of contentsClick link to navigate to the desired location
This content has been automatically translated from Ukrainian.
Modern iPhones and some Android devices take photos in HEIC (High Efficiency Image Coding) format — this is a new image standard that allows you to store high-quality photos in a smaller size than the usual JPEG. Efficient, right? But there are a few important nuances associated with this format.

Browser Support

HEIC is not supported by all browsers. For example:
  • ✅ Safari (on macOS and iOS) supports HEIC.
  • ❌ Chrome, Firefox, Edge — do not support HEIC directly.
So if you upload a HEIC file to a website and try to display it — users in most browsers simply won’t see the images.

Common Problem: Users Simply Change .heic → .jpg

To pass HTML validation when uploading an image (for example, through <input type="file" accept="image/jpeg">), some users simply rename the file from photo.heic to photo.jpg.
And, unfortunately, the browser doesn’t always detect this right away.
What happens next?
  • The server or frontend thinks it’s a .jpg, but cannot process it.
  • Errors may occur when processing the image, generating thumbnails, or viewing in the browser.
  • And worst of all — such files can "break" the image pipeline on the website.

What to Do (for Developers)

  1. On the frontend, check not only the file extension but also the MIME type (file.type).
  2. When validating on the backend, analyze the file content or use libraries that accurately determine the format.
  3. Notify users about supported formats.
  4. When jpg upload doesn’t work - during debugging, check the mime-type. This Trojan horse can take time, so it’s better to look inside right away.
HEIC is a modern and efficient format, but it is still not supported everywhere. Changing the file extension is not a format conversion, and it creates more problems than it solves. If you are a developer — check the format at the content level. If you are a user — it’s better to use a converter than to change the name.

This post doesn't have any additions from the author yet.

Задача на перевірку правильності розстановки дужок (Ruby)
21 May 10:27

Задача на перевірку правильності розстановки дужок (Ruby)

meme code
meme code@memecode
Як знайти підмасив з максимальною сумою (Maximum Subarray Sum) в Ruby
22 May 11:01

Як знайти підмасив з максимальною сумою (Maximum Subarray Sum) в Ruby

meme code
meme code@memecode
Google Ads for Dummies: A Step-by-Step Guide for a Successful Start
28 May 10:21

Google Ads for Dummies: A Step-by-Step Guide for a Successful Start

meme code
meme code@memecode
What is jemalloc and how does it relate to Ruby / Ruby on Rails
30 May 11:53

What is jemalloc and how does it relate to Ruby / Ruby on Rails

meme code
meme code@memecode
05 Jun 01:52

[Fixed] uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger (NameError)

meme code
meme code@memecode
The preview in the network tab after the Chrome update has become very small.
05 Jun 18:23

The preview in the network tab after the Chrome update has become very small.

meme code
meme code@memecode
Чому вибір CMS важливий під час розробки сайту?
29 Jun 12:34

Чому вибір CMS важливий під час розробки сайту?

meme code
meme code@memecode
Error 403 on the website: what it means and how to fix it
24 Jul 23:50

Error 403 on the website: what it means and how to fix it

meme code
meme code@memecode
What is vibe coding?
25 Jul 21:51

What is vibe coding?

meme code
meme code@memecode
What is combinatorial explosion?
28 Jul 11:50

What is combinatorial explosion?

meme code
meme code@memecode
What is a brain stack?
28 Jul 19:37

What is a brain stack?

meme code
meme code@memecode
What is integer overflow?
15 Aug 08:28

What is integer overflow?

meme code
meme code@memecode