From IndieWeb
Jump to: navigation, search


A photo is a post whose primary content is a photograph or other image, with an optional caption. With multiple photographs it becomes a multi-photo post.

A photo upload is typically how photo posts are created.

The term “photo” can also refer to a profile photo.


You should own your photos like you own any other content you create. Many photos sites have gone down over the years, taking invaluable personal memories with them.


There are different approaches to posting photos. E.g.

  • As a note with a primary image
  • As an image, with text (caption) only following
    • the image is the focus of the post, and text is in service of the image.
  • Hosting variations - image files hosted on
    • your primary webhost/domain
    • a "photos." subdomain of your domain that maps to a cloud/CDN service like Amazon S3 or Akamai.
    • as Creative Commons licensed content uploaded to Wikimedia

How to markup

(stub section)

Be sure to markup your actual photo image (or hyperlink to higher quality image) class="u-photo". A photo post could look like this:

<div class="h-entry">
  <img class="u-photo" src="photo.jpg">
  <p class="p-content">Look at this awesome sunset!</p>
  <p>published on <time class="dt-published">2013-03-07</time> by <a href="/" class="u-author">me</a>

(could be rephrased better) This also means, don't go marking up every random image in every random post with "u-photo", unless you really want every random post being mistaken for a photo post.


Tagging (AKA annotating) photos, initially popularized by Flickr, has become a key motivation for publishing photos. Here are a number of ways you can tag photo posts, both directly in a post, and as a response to a photo post!

Implemented / in practice:

Research / Brainstorming:

  • location / location-of - setting/suggesting the location of a photo is colloquially referred to as tagging a photo with a location.
  • area-tag / area-tag-reply - tagging a specific area of a photo, either with text, or a person-tag.

Consider adding research from analyzing IIIF prior and current work.


POSSEing photo posts makes sense certainly to photo silos like:

In addition, it makes sense to POSSE to generic silos, despite the fact that they will only retain a (likely) lower resolution copy of your photo:

  • Twitter - as a native Twitter photo tweet for your friends on Twitter to see your photos
    • using TwitterAPI, or
    • using Bridgy Publish[1]
  • Facebook - similarly for your friends on Facebook to see your photos
    • using Bridgy Publish[2] - which also supports copying over person-tags (of anyone person-tagged with their indieweb site who is signed up on Bridgy, or with Facebook profile URLs with profile IDs)

POSSE person tags

You should POSSE any person-tags on your photo to any POSSE copy as well.

IndieWeb Examples

Sorted by earliest photo posts first.

Ryan Barrett

Ryan Barrett uses WordPress to post photo posts on since around 2003-03-06 and multi-photo posts since 2014-12-23. Examples:

Bret Comnes

Bret Comnes uses gitpub to post photos directly on since 2013-02-26, and started posting photos using ownyourgram on 2014-05-18. E.g.

Ben Werdmuller

Ben Werdmuller uses idno to post photos (including taking them with a mobile web upload interface that uses the camera!) on (since ????-??-??), and POSSEs them to Facebook and Flickr (since ????-??-??)

  • e.g. ??? a photo post permalink on
  • mobile photography and posting demonstrated live at IndieWebCamp 2013 in Portland.

Aaron Parecki

Aaron Parecki has been posting photos to his own site since IndieWebCamp SF on 2014-03-08, using OwnYourGram to turn Instagram into a publishing client.

Kyle Mahan

Kyle Mahan has been posting photos of his cat since 2014-05-17, using OwnYourGram and occasionally uploading images directly

Jeremy Keith

Jeremy Keith uses his own custom PHP-based CMS to post photos (with location info!) on and POSSE them to Twitter since 2014-07-05 and to Flickr since 2014-07-08. Examples:

Calum Ryan

Calum Ryan has been posting photos directly to his website and then syndicating to Twitter since 2015-07-19. Examples:

Kartik Prabhu

Kartik Prabhu uses Bundle to publish photo posts since 2014-07-27, and multi-photo posts since 2014-07-28. He does the following:

  1. Uploads the photo(s) to G+ albums purely for storage
  2. Publishes a photo(s) post on his own site
  3. (Semi-)automatically POSSEs to Twitter as a photo post via Bridgy, since 2014-08-30
  4. Manually POSSEs to G+.



Tantek Çelik uses Falcon to publish photo posts since 2015-244 which are note posts with an embedded image that have been auto-upgraded to being photo posts. He does the following:

  1. Usually uses Instagram iOS client to post a photo there.
    • Sometimes to Wikimedia commons instead.
    • Sometimes to IndieWebCamp wiki instead.
  2. Writes & posts a note on his own site that starts with a direct .jpg URL of the photo image, then a space/linebreak, then permalink of the Instagram post, then caption.
  3. That "note" is auto-upgraded by CASSIS's auto_link function into a photo post by putting the u-photo class name on the auto-embed <img> of the JPG, since it's the first URL in the "note".
  4. Falcon automatically uses Bridgy Publish to POSSE the photo as a photo post to Twitter & Facebook (since 2015-11-08 including POSSEing Facebook person-tags since 2015-12-05), and Flickr (since 2016-02-01, manually since 2016-01-16 of a 2016-01-01 photo), saving the resulting syndication URLs in storage.


Since this was an auto-upgrade change, it is likely that there are older notes that got upgraded to photo posts as well.

gRegor Morrill

gRegor Morrill uses ProcessWire to occasionally publish photos.

Ryan Rix

Ryan Rix (rrix) uses Arcology to publish photos through his site and syndicate them out to Facebook and Twitter using Bridgy.

Jay Robinson

j4y_funabashi is backfilling his site with ~10 years worth of photos

Marty McGuire

Marty McGuire uses Quill with a custom micropub handler to post photos (with notes).

Marty is also displaying interactive 360 photospheres (panoramic images in equirectangular projection, common in cameras like the Ricoh Theta S). In browsers with Javascript enabled, the panoramic images are upgraded to an interactive Google VR View.

  • First example:
  • Panoramas work like a regular photo post with a couple of exceptions:
    • The large image size can lead to failed uploads or server rejections
    • A panoramic photo is differentiated from a non-panoramic photo by EXIF XMP tag "ProjectionType=equirectangular"

Jason Garber

Jason Garber uses FrancisCMS to publish photo posts to his website since 2015-12-18.

Notes with image examples

Notes with embedded photos that are not marked up with u-photo are similar to photo posts.

Barnaby Walters

Barnaby Walters uses Taproot to post photos on since at least 2012-12-13 as notes with embedded images.

  • 2017-07-21: the image src in this post is dead currently


  • gRegor Morrill: I don't understand the distinction between 'photo' and 'note with photo.' It was suggested in chat by mko that a 'photo' post would be a photo with no other content. However, this page indicates caption text may follow the photo. Per discussion, the caption would be the p-summary/p-name of the photo post. This seems to make it no different than a regular note, then, as far as microformat parsing. Example: log
  • On a photo post, text is directly "related to the photo", where text in a note can be "conversational" or tangential.
    <mko> Another example, from my own experience. I was the design lead at hi5. We did research into how users were using the Photos feature versus the Status Update feature (which had the ability to post a photo). Users posted photos without any text the vast majority of the time. When users posted status updates with photos, on the other hand, they almost never did so without accompanying text. On top of that, we found that when there was text accompanying a photo in the Photos section, it was almost always a caption related to the photo (with very few exceptions), whereas those in a status update that would go on the Friend Feed typically was conversational and not directly related to the photo.


The following silos specialize in photo posting/hosting/sharing:

In addition, the following silos support photo posts in addition to other types of posts:

Here are some notes on specific silo treatment of photos:


With Facebook, you have the options of:

  • creating an actual photo post (preferred)
  • or posting a status update (note) and linking to the original photo or if you're linking to a permalink on your own site (e.g. as part of POSSEing), optionally using OGP to specify the image to use for a preview.
    Facebook note with preview image

Creating an actual photo post looks much better. More detail: POSSE_to_Facebook#Posting_Photos_via_the_Facebook_API


Main article: photo brainstorming
(why? should this be re-incorporated here until there's a good reason to move a subsection to a separate page? brainstorming things should eventually migrate to actual things so moving them to a separate page is a step backwards. Tantek Çelik 18:12, 22 December 2017 (PST))

People Area Tagging

See: person tag as area tag


More brainstorming about POSSEing photos!

Distinguishing Photos from Notes

Bridgy Publish has a concrete use-case where it would be useful to mechanically differentiate posts where the photo is primary, vs. notes with an included image that is not the focus of the note. Photo posts should be POSSEd as native photo post types on Facebook and included as attached media on Twitter. POSSEd notes would prefer to link to the original post, and possibly include the image as a link-preview.

The problem is that both types have the same mf2 representation: p-name/e-content for caption and u-photo for the image.

Simplest solution is to treat all posts notes with a u-photo as photo posts.

Why POSSE rather than TwitterCard

(Not sure if this belongs here or on Twitter page, but capturing as part of this for now.) Advantages to POSSEing actual photos to Twitter, rather than just a link to a photo post on your site with Twitter Cards metacrap markup:

  • Further distribute the use of Twitter kind of like a CDN for your photos
  • People see a larger version of the photo via a phototweet than a Twittercard
  • Usual avoid metacrap (silo-specific meta tags) advantage
  • Photo tweets appear inline in tweet list views (e.g. Twitter timeline / homepage) whereas twitter cards won't appear inline automatically (require twiddling open).
  • Photo tweets work immediately, whereas photo cards require that Twitter whitelist your domain for cards in general (and maybe in particular for photo cards?)
  • Using the TwitterAPI hides the proprietariness, whereas using twittercards means your own website has proprietary metacrap on it
  • Twittercards set a worse example (proprietary metacrap) for others that may view source

backfeed person tags

If you're POSSEing photo posts, in addition to normal backfeed support of silo like, repost, reply responses, you should also support backfeeding person-tagging on your POSSE photo copies.

Two reasons why:

  1. Your own convenience / ease of use. Some silos have nice/easy person-tagging UIs, i.e. that often auto-suggest who to tag in a photo with a simple one button (Yes) UI to do it (as you select/hover faces), e.g. Facebook. Thus it may be easier to implement backfeeding person-tags than implementing your own person-tagging UI (and facial recognition support too!)
  2. Person-tags from friends. Some silos let your friends tag people they know in your photos (e.g. Facebook, Flickr), and thus they're likely to do so. You should backfeed these person-tags from your friends back to your original photo post.

Bridgy backfeed does not yet support backfeeding person tags from POSSE copies of photo posts.[4]


How to markup caption

We need to collect the different ways people are marking up the caption of a photo post, e.g. in which properties (name, summary, content, several thereof?), in same property as u-photo images themselves (e.g. in e-content), and then come up with one or a few recommended ways to markup the caption of a photo.

Inside the e-content

  • I have been wrapping the img class="u-photo" and caption in the e-content [5]. Mainly because I initially set up my templates to wrap the post's content that way -- for use with notes and articles. I'm open to changing that for photos. Currently, removing the e-content and putting the caption in a p-name p-summary sounds like a good recommendation. gRegor Morrill 18:25, 22 December 2017 (PST)

add other variation

  • ...


Software you can install on your IndieWeb server to host your own photos


IndieWebCamp sessions about photo posts and photos in general:

See Also