{"id":158630,"date":"2022-06-09T22:46:02","date_gmt":"2022-06-09T22:46:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gravatar-mirror\/"},"modified":"2025-07-31T00:10:54","modified_gmt":"2025-07-31T00:10:54","slug":"mirror-gravatar","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/mirror-gravatar\/","author":7392184,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5","stable_tag":"1.5","tested":"6.8.5","requires":"2.7","requires_php":"","requires_plugins":null,"header_name":"Mirror Gravatar","header_author":"Jamie Zawinski","header_description":"Locally mirror commenters' Gravatar images.","assets_banners_color":"","last_updated":"2025-07-31 00:10:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.jwz.org\/mirror-gravatar\/","header_author_uri":"https:\/\/www.jwz.org\/","rating":5,"author_block_rating":0,"active_installs":20,"downloads":1844,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0":{"tag":"1.0","author":"jwz","date":"2022-09-11 05:18:15"},"1.1":{"tag":"1.1","author":"jwz","date":"2023-05-29 21:29:27"},"1.2":{"tag":"1.2","author":"jwz","date":"2024-04-03 23:27:02"},"1.3":{"tag":"1.3","author":"jwz","date":"2024-07-31 18:09:48"},"1.4":{"tag":"1.4","author":"jwz","date":"2025-07-30 23:25:39"},"1.5":{"tag":"1.5","author":"jwz","date":"2025-07-31 00:10:54"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":2740150,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.2","1.3","1.4","1.5"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":2740150,"resolution":"1","location":"assets","locale":"","width":1280,"height":1332},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":2740150,"resolution":"2","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"A copy of the user's gravatar.com profile is saved with the comment.","2":"A live preview of the avatar when commenting."}},"plugin_section":[],"plugin_tags":[107,127],"plugin_category":[],"plugin_contributors":[94249],"plugin_business_model":[],"class_list":["post-158630","plugin","type-plugin","status-publish","hentry","plugin_tags-comments","plugin_tags-gravatar","plugin_contributors-jwz","plugin_committers-jwz"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mirror-gravatar\/assets\/icon-256x256.png?rev=2740150","icon_2x":"https:\/\/ps.w.org\/mirror-gravatar\/assets\/icon-256x256.png?rev=2740150","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mirror-gravatar\/assets\/screenshot-1.jpg?rev=2740150","caption":"A copy of the user's gravatar.com profile is saved with the comment."},{"src":"https:\/\/ps.w.org\/mirror-gravatar\/assets\/screenshot-2.jpg?rev=2740150","caption":"A live preview of the avatar when commenting."}],"raw_content":"<!--section=description-->\n<p>Locally mirrors commenters' Gravatar, Libravatar and Mastodon avatars and serves them from your site, rather than loading them from a third-party web site upon each page load.<\/p>\n\n<p>This has several effects:<\/p>\n\n<ul>\n<li><p>If most of the comments on a post have no avatar, those turn into <em>one<\/em> load of a shared image, instead of one for each comment, that happens to return the same \"mystery\" image.<\/p><\/li>\n<li><p>You will be serving more (small) images.<\/p><\/li>\n<li><p>If a commenter's URL looks like a link to a Mastodon \/ ActivityPub profile, their Mastodon account's avatar will be displayed.<\/p><\/li>\n<li><p>When commenting, a live preview of the avatar tracks the contents of the \"Email\" field.<\/p><\/li>\n<li><p><a href=\"https:\/\/www.gravatar.com\/\">gravatar.com<\/a> and <a href=\"https:\/\/www.libravatar.org\/\">libravatar.org<\/a> no longer have a web-bug on your blog that is loaded by each viewer.  Instead of being loaded at every page view, the avatar is loaded just once, on the server-side, at the time each new comment is posted.<\/p><\/li>\n<li><p>If someone changes or deletes their avatar, your site continues displaying the image that was their avatar at the time that they last posted.<\/p><\/li>\n<li><p>Likewise, the user's Gravatar or Mastodon profile is saved along with their comment, viewable by admins even if they later change or delete it.<\/p><\/li>\n<\/ul>\n\n<h3>Security and Privacy<\/h3>\n\n<ul>\n<li><p><a href=\"https:\/\/www.libravatar.org\/\">Libravatar<\/a> is open source. Gravatar is <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gravatar\">owned by WordPress<\/a>, and their <a href=\"https:\/\/automattic.com\/privacy\/\">privacy policy<\/a> says that they don't monetize that info.  But hey, corporate policies change, subpoenas exist, and domain names get sold.<\/p><\/li>\n<li><p>Should you trust Gravatar with user data? Well, in 2024, Gravatar announced that they are <a href=\"https:\/\/jwz.org\/b\/ykXF\">pivoting to blockchain<\/a>, whatever that means, so that's fairly disqualifying. See also <a href=\"https:\/\/jwz.org\/b\/ykPk\">WordPress \"growth hacking\"<\/a> and <a href=\"https:\/\/jwz.org\/b\/ykNg\">WordPress sells users' data to train AI tools<\/a>.<\/p><\/li>\n<li><p>There used to be a potential issue due to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gravatar#Security_concerns_and_data_breaches\">Gravatars using MD5 hashes<\/a>, but these days they use SHA256, so I assume that's no longer a problem.<\/p><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mirror-gravatar<\/code> directory to your <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the \"Plugins\" menu in WordPress.<\/li>\n<li>Make sure the directory <code>\/wp-content\/plugins\/mirror-gravatar\/<\/code> is writable by your web server.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.0<\/h4>\n\n<ul>\n<li>Created<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Also mirrors Mastodon avatar images, if the commenter's URL is of the form \"https:\/\/example.com\/@username\"<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Minor Mastodon tweaks.<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Prefer SHA256 to MD5, since Gravatar accepts that now.<\/li>\n<li>Added support for Libravatar.<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>Oops, I forgot to include the CSS file in the distribution.<\/li>\n<\/ul>","raw_excerpt":"Locally mirror commenters&#039; Gravatar or Mastodon profile images.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/158630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=158630"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jwz"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=158630"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=158630"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=158630"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=158630"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=158630"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=158630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}