Instagram is a popular photo and short video hosting silo most well known for square photos that have been processed with an image filter.
Why
Should I join Instagram? Why use Instagram?
Indie photo posting client
Some of us have found it to be a useful client for posting to your site via Micropub and ownyourgram.
If your site supports receiving Micropub requests for publishing photos, you may want to consider creating a private Instagram account, using it to setup ownyourgram, and then use Instagram’s native mobile app(s) and servers purely as a convenient client for posting photos and short videos to your own site.
This technique of using a silo purely as a client to get content to your own site is also referred to as "silos as plumbing".
caption limited to 2200 characters (just the first comment if it is by the author) (per this post)
displayed in full if 125 chars or less, otherwise only the first line or so is displayed followed by a "…" that a reader must click to display the rest.
hashtags in caption or any comment by author, hyperlinked inline
story (AKA "Your Story") singular post, one per profile (since mid-2016)
ephemeral photos and videos that disappear in 24h. The story feature allowed posting multiple photos (and/or videos) in a time sequence (shown in sequence one at a time) which many use to tell a story about their day. Access to individual story items disappear from other users' views within 24 hours.
positioned text labels (optional color/rotation/resizing)
On 2018-04-25 instagram launched an archive retrieval process, accessible at https://www.instagram.com/download/request/. There is a 48 hour window cited for instagram to comply with an archive request.
Downloaded data consists of
Photos, in folders sorted by month, in jpg format at 72dpi (may be larger than original)
Post text, comments, likes, contacts and similar information in .json format
freedom.io (source) can copy all of your Instagram photos and videos to WordPress, Tumblr, or Blogger, creating a new blog post for each, with the original dates and all comments intact.
Norm's instagram-backup tool exports Instagram photos and metadata.
Single Photo Bookmarklet
If you view a single photo permalink page, the following bookmarklet will extract the permalink (trimmed), photo jpg URL, and photo caption and copy them into a text note, suitable for posting as a photo that's auto-linked:
For plain text:
javascript:n=document.images.length-1;s=document.images[n].src;s=s.split('?');s=s[0];u=document.location.toString().substring(0,39);prompt('Choose "Copy ⌘C" to copy photo post:',s+' '+u+'\n'+document.getElementsByTagName("h1")[0].innerText.replace(/\n\.(\n\.)+/g,'\n'))
For HTML (e.g. storage files. escapes & < >)
javascript:n=document.images.length-1;s=document.images[n].src;s=s.split('?');s=s[0];u=document.location.toString().substring(0,39);prompt('Choose "Copy ⌘C" to copy photo post:',s+' '+u+'\n'+document.getElementsByTagName("h1")[0].innerText.replace(/\n\.(\n\.)+/g,'\n').replace(/\&/g,'&').replace(/\</g,'<').replace(/\>/g,'>'))
Any questions, let me know! Tantek Çelik (I used the second version ("For HTML") myself as part of my photo post authoring flow until 2017-085. -t).
Drag and drop-able button version can be found here
Bookmarklet improvements
remove errant username from start of caption text
support multi-photo posts (detecting, producing markup)
Instagram does not have a photo upload API. However they do have comments delete / create APIs. Sadly commenting via the API is not supported. So here's how you can fake POSSE to Instagram:
You post to Instagram using their client app, including location information, people tags, and caption (first comment).
Your server receives a notification of the photo post via webhook call back
Your server copies the photo (in PESOS fashion) to your own server
creating a permalink for the photo on your own server
copying the location information, people tags, and caption
adding a link to the copy of the photo on Instagram with u-syndication
Your server deletes the first comment on the Instagram photo
Your server creates a new first comment (thus caption) on the Instagram photo, as you, with:
original caption contents followed by permashortlink for the photo on your server
And bingo, you've effectively created a POSSE copy of your photo on Instagram since it now has a permashortlink back to the new "original" on your own site.
At this point you can also use a service like Bridgy to backfeed comments on the photo from Instagram to your own site.
POSSE via private API
Instagram has a private, undocumented API that is used by the web client. You can use this API to do almost anything the web client can do, but is likely to be changed at any moment.
Grant Richmond automatically POSSEs likes, photo posts and galleries to instagram by resizing his photos and sending the data to the private api with a npm package.
Since Instagram doesn't have an API to post photos, many people use OwnYourGram to do the reverse: post photos to Instagram and have the service post them back to their website. To use this, your site will need to support Micropub.
POSSE responses
Kyle Mahan POSSEs likes for Instagram photos via the official Instagram API (which is read-only for everything except, inexplicably, for likes) since 2015-01-03
Added POSSE for comments via "unofficial" API (Selenium/PhantomJS browser automation) on 2015-07-12
Bridgy Publish can POSSE likes to Instagram since 2015-01-07
...
POSSE via Workflow.is
Sebastiaan Andeweg uses the iOS app Workflow to semi-automate his photo posting workflow, including a post to Instagram. He documented his Workflow workflow on Workflow.
Instagram recently updated their mobile web site to allow mobile web photo posts, thus it should be possible to have your server POSSE to Instagram for you by acting as your mobile browser.
Also looking into this for Bridgy Publish support:
gRegor Morrill posts photos on gregorlove.com first, manually posts the same photo and caption to Instagram, copies the Instagram URL and adds it as a syndication link on the original photo post.
originally was including my URL in the Instagram caption, but discovered Bridgy does not need that; the syndication link is enough for Bridgy backfeed.
yes, this is a bit of slow process, so I don't post photos very often. :]
Tantek
Tantek Çelik posts photos on Swarm (private account) for ease of mobile publishing, then uses those to create photo posts on tantek.com, and manually posts the same photo and (sometimes abbreviated) caption to Instagram, copies the Instagram URL and adds it as a syndication link on the original photo post.
You can use Bridgy to get some backfeed of responses from Instagram POSSE copies.
(this section is a stub)
limitations with Brid.gy: only first 10 likes come through.
Scraping the public Instagram web pages only gives you the oldest 10 likes for a picture. After that, the UI says 'and X others' anyway. The property is called edge_media_preview_like, and includes a full count, but no names, pictures or URLs of the people who like it, other than the first 10. (You can't poll either, because they give you the first, not the last.)
You can supposedly get your own API key (in sandbox mode) to do your own backfeed. (does anyone do this?)
Getting likes seems to be impossible without getting your app approved. Some endpoints work, others give a HTTP 200 status, but an empty array.
/users/self/media/recent works, probably because it contains you own pictures
/media/:id/likes does not work, probably because the likes are other people's content
/users/self/media/liked does not work, probably because your likes contain other people's content
Work has also been done on determining its unofficial API (which is against Instagram's terms of service, but allows you to post): https://github.com/mislav/instagram/wiki
Instagram Worm uploaded photos using private/undocumented API (needs citation)
Add ?__a=1 to the end of an Instagram profile, photo, or feed URL (e.g. /) to get JSON metadata. This JSON is also embedded in the normal HTML pages. Example parsing code in granary.
For feed URLs, the array of photo objects is in the FeedPage.feed.media.nodes[] element.
For profile URLs, the array of photo objects is in the ProfilePage.user.media.nodes[] element.
For photo URLs, the photo objects are the PostPage[].media element(s).
The private API is rate limited to 60 photos per hour
Specifically, they plan to restrict and require approval for /users/self/feed and /media/popular and any use cases that send photos outside of Instagram.
Instagram limits the number of hashtags that you can put on a post to 30. If you try to add more, your comment is rejected with the unhelpful and misleading error message:
Couldn't post. Tap to retry
(no amount of retrying will help, so why ask the user to do so?)
In a potential dark pattern, Instagram limits the number of accounts you can unfollow at one time in an attempt to "protect our community". This was observed on 2022-12-07 by Anthony Ciccarello after about 15 unfollows.
Repetitive account lock out
2023-01-30 Chris Aldrich reports having been algorithmically locked out of his account twice in under a month without any indication of issues he'd potentially violated, and at a time in which his use of Instagram was almost non-existent. Attempting to regain access takes several days and includes the need to upload a selfie with a custom code, presumably to verify that there is a real person behind the account. Potentially worse, the lockout didn't send an email notification and the issue was only discovered by attempting to log in. Warnings included verbiage that if the account wasn't verified in 30 days the account would be shut down without any seeming means of recourse.
2023-01-21 Anthony Ciccarello also was locked out of his account and only noticed after logging in.
Automated behavior warning
gRegor Morrill 2023-06-14: Visiting my profile with the Bridgy Chrome extension enabled, I received the warning "We suspect automated behavior on your account" and to prevent my account from being restricted or disabled, make sure no other users or tools have access.
This happened once before in the past few months and I disabled the browser extension to be safe. I re-enabled the extension about two weeks ago to try it again. Unfortunately it seems likely Instagram will keep flagging it, so I am going to keep the extension disabled.
Aggressive spam check and account restriction
gRegor Morrill: 2023-10-30: I left a supportive and innocuous comment on a mutual's post and Instagram immediately said it was spam and removed it, and appeared to restrict me from commenting on any posts for at least 24 hours.
Shortly after it was purchased by Facebook, Instagram stopped including Twitter metadata on their photo pages, so Twitter Cards no longer show image previews for Instagram photos.
Instagram drives more traffic to their site, at the cost of a worse experience for users.
Using OwnYourGram or another method of PESOSing your photos out of Instagram, you can control how your photos are shared on other silos like Twitter. (e.g., by including Twitter metadata, or by posting the photos directly).
Switch from Foursquare to Facebook venues
Some time in 2014-05, Instagram switched from using Foursquare's venue database (e.g. in the iOS app UI) to using Facebook's places database.
This has resulted in:
fewer venue matches (often completely missing venues that were present on Foursquare)
less accurate venue locations such as misspellings, "venues" with varied granularity (business vs neighborhood)
loss of venue information when cross-posting from Instagram to Foursquare (i.e. checks you into the wrong location, or a generic neighborhood rather than a specific venue)
Articles about worse Instagram locations due to using Facebook venues:
When posting a photo to Instagram, if "add to photo map" is enabled (even if no venue is chosen) then the exact lat/lng of the photo is recorded. When viewing the single photo you won't see the location of it. However, when viewing the person's user profile you can switch to the map view and see their photos all on a map.
The map shows photos as clusters, and zooming in will expand the clusters into smaller clusters until finally individual photos appear on the map.
It is relatively easy to figure out the approximate location of someone's work or home by looking for these clusters.
When adding a photo at a venue that doesn't exist, it is possible to create a "custom location", which is unfortunately not editable from that point on.
One potential up-side is when searching for venues, your custom locations now show up at the top of the list without needing a round-trip to the server to search.
Creating this custom location prompts only for the name, the exact geo location is added automatically, meaning it is not possible to adjust the specific location of the venue.
Censorship beyond community guidelines
Instagram is establishing a history of censoring by removing (and sometimes restoring later) and/or hashtag results that are not actual violations of their Community Guidelines, and are otherwise innocuous material. For example:
"So @instagram took down my BEAUTIFUL wedding video stating it’s offensive. My marriage to my wife is OFFENSIVE?! I’m furious! Being gay is not OFFENSIVE, and don’t let anyone EVER let you feel that way! I’ll be damned if I back down from this. Comment and kindly encourage Instagram to fix this and put my video back on my page! . . #lgbtq #lgbt #lovewins #lovewillwin #loveislove #lgbtqlove #love #instagay #instagram #instadaily #gaygirl #lesbianwedding #lesbians #lesbiancouple #weddingvideo #wedding #marriage #wifelife #wifedup" @Kelsey Pearson | LGBTQ | Vegan December 10, 2019
Unlike Flickr (and your own site if you so choose!), there's no metadata for marking photos or indeed whole photostreams as licensed under Creative Commons licenses.
i-am-cc.org lets you choose a CC license for your Instagram photographs, but you have to log into the service every three months to 'renew' the license grant.
Instagram is a dialup BBS. It is the most locked-in and user-hostile of the bunch, as I will now express through the medium of a <TABLE>
(analysis therein)
from Facebook branding
An update to the Instagram iOS app sometime in 2019 December removed the "Instagram" logo text mark on the splash screen and replaced it with just the icon and
from FACEBOOK
like this:
opaque terms of service banning
Angelo Gladding attempted to follow a link from chat and was asked to log in. His account had apparently been banned. No email was sent and no response was given other than the red text in the first image below. The account was only ever used to view posts that required login, possibly to like one or two posts to test the feature.
usernames cannot be domain names
Instagram's terms of service explicitly prohibit using domain names as usernames, despite "." being an allowed character in usernames.
You can't use a domain name or URL in your username without our prior written consent
Criticism: 2021-09-14 WSJ: The Facebook Files, Part 2: 'We Make Body Image Issues Worse' / … research that Facebook has kept private: its internal studies on the effects of Instagram, one of its core products, on teen mental health. WSJ's Georgia Wells details the company's findings, which show that Instagram can be harmful for young users, particularly teen girls …
And even Blumenthal had a good moment: He demonstrated Instagram’s laxness by creating a fake account for a fictional teen girl with an eating disorder that showed how quickly Instagram’s algorithms handed her piles of disturbing information.
While Instagram, which is used to share photos and video clips, scored highly in terms of promoting self-expression and self-identity, it is also perceived having negative implications for anxiety, depression and the fear of missing out (FoMO).
"We spent the last 6 months investigating Instagram's algorithm, talking to professional content creators, reading through patents and analyzing the newsfeed of 26 donors who volunteered their data. Read our findings ⤵️
criticism or perhaps blunt blocking of misinformation: “This Hashtag Is Hidden” is a feature of Instagram where certain hashtags aggregation pages display a message instead of a list of posts: https://www.instagram.com/p/CC8uOySnED2/
I also think it's simply an automated check that recognised this hashtag being used in high volumes of flagged/blocked posts, which affects the algorithm temporarily.
In my time as an IG/FB employee, most of the blockages and suspensions were performed by an automated system that frequently runs checks. Not one human is even involved in the process.
That's why content sometimes may even get flagged after being online for a long time.
Only a small percentage was due to actually flagging the content, and most of those rejections, suspensions and blocked accounts had never even been reviewed by a human employee (until further escalation).
Around 10:30am Pacific on 2021-03-19 the instagram apps and websites were unavailable. The iOS app shows an error "Couldn't refresh feed" and the website shows a generic "5xx Server Error" page.
Around 12pm Pacific on 2018-07-13, Instagram was unavailable. The iOS app shows an error notification when visiting your home timeline or profile page "Couldn't refresh feed", and visiting the "discover" tab shows "We're sorry, but something went wrong. Please try again." On the website, a generic "5xx Server Error" message was displayed.
2017-08-26 Outage
Saturday morning turned out to be social-media-free for a number of Facebook and Instagram users, albeit involuntarily.
Some people reported difficulties accessing the two social platforms beginning at about 9 a.m. ET
"Response Error. Technical description: 502 Bad Gateway - Response Error, a bad response was received from another proxy server or the destination origin server."
"“It's amazing how productive doing nothing can be.” — Jeff Bridges as #KevinFlynn Original photos at tantek.com/t50B1 . Set a #sunrise PR #running to the top of #MtTam today (#Thursday), 84:41 #ascent, cutting nearly 4 minutes from my previous #record set six months ago. Thanks to a #beautiful day, chasing speedy pal Hannah, and taking time-off to heal from an injury 33 days prior. . That rainy Friday I #ran up #Tam twice (while pal Bryan was doing 3x), hit my head on a tree on the first descent, injured my right thigh on a hard fall onto slippery solid rock on the second. (See previous photos post here on IG, smiles despite rain and falling, because I’d just run up&down a mountain, twice) . Took the weekend to recover, went to the doctor Monday, no concussion (or any symptoms of head injury, somehow no head bruise either), no leg break, just tissue damage. Ran a mile the next day, that night my right knee turned purple and swelled up, apparenty from my internal thigh bruise liquifying and leaking downward. Stopped running after that. . Started waking up every night from knee pain, struggling to get back to sleep. . Three weeks without running, part of it at a yoga retreat, doing yoga twice a day, and plenty of nothing too. On the second night of the retreat the overnight knee pain stopped. Tried a short trail scamper down & up the next day, felt fine. . Gradually increased my #trail running distance and altitude until returning to Tam this morning for the first time since injury. Felt strong so I pushed hard and finally shattered a six month old PR. . #MountTam #Marin #trails #trailrun #run #TemelpaTrail #MtTamEastPeak #50ktraining #restandrecover #befierce #pushyourself #getup #facethemountain #fitstrongfierce #workharddreambigdocoolshit #latergram #nofilter #trailthursday #PRThursday . Original photos (full width/height) at tantek.com/t50B1" @Tantek Çelik April 26, 2019
Stalkture: "Browse images and videos on Instagram. Find out Most Popular Hashtags and Users. This service uses the Instagram API but is not endorsed or certified by Instagram." Emphasis added.
My post (below) was removed from Instagram for “hate speech.” This has happened before (I’ve been posting this sentence every day since December 1, 2016), so I appealed. But their decision stood.
What the actual f*ck, @instagram?" @monicabyrne13 October 18, 2019
"I did appeal, and it was denied. That’s the second photo in the tweet. Since then, a bunch of the same posts have been taken down with no option to appeal, and I got this warning." @monicabyrne13 November 4, 2019
"PSA - if you added your mobile number when you joined instagram, it's not private. Anyone that follows you can access it and contact you via Whatsapp. What the actual fuck" @KateFlood November 24, 2019
"There is something fundamentally broken with social media when the platform asks me to pay to boost my posts so my friends and family can see holiday pictures of my kids. This is unacceptable, we need to take control of our social media platforms." @rabble December 20, 2019
"Constantly seeing people in social media forums recommending dodgy third-party browser extensions to each other so they can upload Instagram photos from the web.
@instagram you literally put people's data at risk by not having this VERY BASIC FUNCTION" @holly March 4, 2020
"Looks like Instagram is getting into the NFT game. All I really want to do is share MY PHOTOS with MY FRIENDS and see THE PHOTOS that MY FRIENDS post.
Instead I see randos with 5 sec “travel video” montages to a random viral song that doesn’t have the artist tagged." @ijustine August 5, 2022
"Economic incentives created comments like this in Instagram and it points out how hustle culture and influencer culture are demeaning. I want to share photos with people who’d like to see my photos. My indieweb blogging ethos is intact. I have no idea how to fix this ecosystem." @artlung September 9, 2022
Feature: Video upload limitations: aspect ratio between 1.91:1 and 9:16, minimum frame rate, maximum sizes, can't edit cover photo after posting: https://help.instagram.com/1038071743007909
Permalink embed hack: change "instagram." in the URL to "ddinstagram." before embedding / sharing and it will embed a much friendlier (no cookies) version.
Apparent shift in pop media providing social media handles from Twitter (many years ago) to Instagram, e.g. 2024-07-23 Newsweek:[ https://www.newsweek.com/team-usa-instagram-handles-1926946 Keep Up With Team USA Athletes by Following Them on Instagram: A Complete List]