Advantages and disadvantages of using base64 encoded images [closed]
Asked Answered
G

4

63

I am thinking of using base64 encoded images for a site I am working on to optimize the load time.

Anyways, before I start, I was wondering: what are the advantages and disadvantages of doing this?

At the moment, I don't see any disadvantage but also I noticed that it is not a technique used very often and that makes me wonder if I didn't miss something.

After googleing the subject I didn't find anything clear so I decided to ask here.

Geer answered 31/7, 2012 at 8:36 Comment(4)
Not sure what you are trying to optimize. Do you think base64 is going to compress more than PNG or JPEG? Logically, you'll just end up with images that are four times bigger, so not much of an improvement.Unreflecting
Higher image size but I don't do a second request to get the picture. Is sent inside the html. So no headers again.Geer
Also I found this usefull but I'm still thinking. davidbcalhoun.com/2011/…Geer
@Geer Very similar question: #1124649 May be, you can get a exact solution here..Anglice
S
71

It's only useful for very tiny images. Base64 encoded files are larger than the original. The advantage lies in not having to open another connection and make a HTTP request to the server for the image. This benefit is lost very quickly so there's only an advantage for large numbers of very tiny individual images.

Suzannasuzanne answered 31/7, 2012 at 8:47 Comment(5)
Some enterprise CMS (like RedDot) also need CSS images to be "hooked up" - a 4 click process. Depending on your platform it could be a time saver.Selfidentity
Hello @Suzannasuzanne Sir, can you explain me why another connection is not required when we use data url? After all we need to download image to change it into base 64. I will be grateful if you can explain. Thanks!Aniseed
Because the data is embedded in the page itself.Suzannasuzanne
Also Google doesn't index base64 encoded images, leads to poorly optimised SEO.Royroyal
@NishanthSreedhara you'd only ever use it for small and insignificant images that don't need indexing anyway. Any large images or photos wouldn't benefit from this mechanism in the first place. So there wouldn't be any SEO impact in most cases.Suzannasuzanne
H
16

the actual length of MIME-compliant Base64-encoded binary data is usually about 137% of the original data length, though for very short messages the overhead can be much higher due to the overhead of the headers. Very roughly, the final size of Base64-encoded binary data is equal to 1.37 times the original data size + 814 bytes (for headers).

In other words, the size of the decoded data can be approximated with this formula:

bytes = (string_length(encoded_string) - 814) / 1.37

Source: http://en.wikipedia.org/wiki/Base64#MIME

Hudnut answered 31/7, 2012 at 8:50 Comment(0)
B
10

Some of downsides as below are already mentioned in this post at How much faster is it to use inline/base64 images for a web site than just linking to the hard file?

  • Most forms of caching are beaten which could hurt a lot if the image is viewed often - say, a logo that is displayed on every page, which could normally be cached by the browser.
  • More CPU usage.
Bole answered 31/7, 2012 at 8:54 Comment(3)
About caching... the page could be cached itself. The downside here is the processing of the data each time.Geer
Agreed but in case of the logo example there can be different and many pages on the site which won't be cached the first they are visited but the cached image of the logo on all of these pages can be used every time from the first page's cache.Bole
@Geer Not if the content on the page updates, then both content and images will need to be downloaded and parsed again.Squires
P
6

also the response time of the HTML page will increase, because images loads asyn in normal scenario. even if images loads late you can start seeing text.

Another advantage of CDN would lost if only media is being cached in CDN

that advantage will be lost.

Pueblo answered 22/1, 2014 at 9:49 Comment(1)
what do you think if just upload image by base64? Since I want to send along with json object.Misquote

© 2022 - 2024 — McMap. All rights reserved.