If I embed an image into a page as an
src with base64 data URI, are image's metadata (EXIF, IPTC, XMP) still available for Google's imagebot?
Google does not index data URI images for Google image search. Google's John Mueller says so here and in the comments below. Because data URI images are not indexed in Google image search, the EXIF data in them is irrelevant.
You can verify that these images are not indexed. I searched Google images for "data uri" and spot checked the results. All of the images I viewed were image files, not base64 encoded image URI. You would think that if Google were able to index data URI images, some of them would show up in the search results for that term.
If Google ever does decide to index data URI images, they should be able to get the EXIF data from them. Data uri is the entire file base64 encoded (no spaces or new lines) with a
data:image/png;base64, prefix. Any meta data in the file would still be present in the base64 encoded data URI version.
I use data URI images on one of my websites. I do so because users typically just view one page on the site to get all the information they need. Including all CSS, JS, and image data inline in the page improves performance dramatically. The images are all small, so the technique works particularly well.
My site gets a fair amount of traffic from Internet Explorer 7 and earlier which don't support data URI images. Therefore I have to serve them conditionally. I have the images on the server as well and I choose to regular image URLs or the data URI based on the
User-Agent header. I treat bots (including Googlebot) the same as IE 7, ie, I serve the images as HTTP URLs. I do this because including data uri images dramatically increases the page size. Most bots don't need to download the images, so it is more efficient for them. I had also noticed that Google Webmaster Tools reported Googlebot was crawling my site much more slowly with data URI images enabled for it. This could technically be considered cloaking, but it would be a way of getting your data URI images indexed.
While Google uses images as base64 encoded data URIs on its own SERP, it doesn't index such images on other websites. Thanks to @dan, who pointed me to the Google Groups discussion, where John Mueller explains this issue. It means too, that the question about the existence of EXIF data in such images isn't relevant.
This explanation makes clear, to which images is this performance optimization technique is better to apply: small images, like icons, favicons and buttons, and those images, who doesn't deliver any additional value for the site's content.
On the other site, if one categorically must embed an image WITH additional content value as base64 encoded data URI, the only best practice to provide image's metadata is to use Schema.org's markup, where it is possible to negotiate EXIF data, e.g. with this kind of markup.
Another promising kind of markup to negotiate data looking like "property:value", like EXIF is, has at the moment a proposal status. But this article from Google's blog shows structured snippets, which can be generated by the markup proposal i linked above.