@jubs here, today, to tell you about a feature we're building: Comments by author!
Comments (or replies) have been around for a while, but they have always been tucked away from your regular feed, and so we're working on a few ways to integrate them into the rest of our experience.
Soon, blogs will have a Comments tab alongside Posts, Likes, and Following. There, you will be able to see posts other people have been commenting on, and, more importantly, find your own comments! This was not possible before, except through notifications if someone engaged with your comment.
We're also working on a way to surface posts commented on by people you follow in your feeds. You will be able to find those in the For You tab, and later, alongside chronological posts in the Following tab.
So, how do you identify those posts in the feeds?Â
Replied posts will show a small preview right there in your dashboard, before you click anything.Â
This is not out yet, but soon! In the meantime, tell us what you think and expect from this! âşď¸
First of all, thank you all for the feedback in the original post!
Today, we're launching the new "Comments" tab for Blog pages, and we'll be testing a For You recommendation based on comments from people you follow. The posts will have a preview of the reply, so you know why you're seeing that post.
You will be able to control the new tab visibility, and whether we should include your comments in your follower's feeds, through a new setting:
The toggle can be found on https://www.tumblr.com/settings/blog/YOUR_BLOG or in the General Settings > Replies section, on Mobile. If you have already disabled the "Share posts you like" setting, the setting will default to disabled.
The new tab is only available on Web and iOS (44.8+) for now, but the toggle is available to everyone (including on Android), so you can control what other people see on your blogs, even if you don't have the new feature yet. Don't worry, we have plans to implement the tab and posts on Android, soon!
---
We want to later include these replied posts to the Following feed as well, and we're planning on adapting the current "Include posts liked by the blogs you follow" toggle to also consider comments, in case you don't want to see shared comments from people you follow.
What do you think? As always, we appreciate your thoughts, keep 'em coming!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
@jubs here, today, to tell you about a feature we're building: Comments by author!
Comments (or replies) have been around for a while, but they have always been tucked away from your regular feed, and so we're working on a few ways to integrate them into the rest of our experience.
Soon, blogs will have a Comments tab alongside Posts, Likes, and Following. There, you will be able to see posts other people have been commenting on, and, more importantly, find your own comments! This was not possible before, except through notifications if someone engaged with your comment.
We're also working on a way to surface posts commented on by people you follow in your feeds. You will be able to find those in the For You tab, and later, alongside chronological posts in the Following tab.
So, how do you identify those posts in the feeds?Â
Replied posts will show a small preview right there in your dashboard, before you click anything.Â
This is not out yet, but soon! In the meantime, tell us what you think and expect from this! âşď¸
Once again, it was Hack Day at Tumblr, our favorite excuse to pause the roadmap for a moment and build something weird, useful, or ideally both. Here is a sneak peek of what the team built.
Unified Inbox
@ex, @kostastsi4 and @alexjf worked on making Asks and Submissions easier to find in the apps, moving your Inbox (currently buried in blog settings) to a tab in the Activity screen, where all your other incoming communication lives.
Gifs in replies
In @eltâs opinion, replies could use some spicing up. So he spent Hack Day adding GIF support to replies. Neat!Â
Fun fact: reply threads themselves actually started as a Hack Day project over two years ago. The circle of hack life continues.Â
Scaling the Reblog Graph Explorer
@blowery improved the implementation of reblog graph to handle massive viral posts gracefully. Instead of struggling with very large reblog chains, this hack rethinks how the graph is laid out so it can handle posts with massive numbers of reblogs more smoothly, making it easier to explore how posts spread across Tumblr.
In-Blog Search Filters
Web had the most complete set of in-blog search filters. Android and iOS? Not so much. @lesianlen worked on bringing parity across all three platforms: Android got Top/Recent sorting, an original posts filter, and Ask and Chat post type filters. iOS went from zero filters to a brand-new bottom sheet with the full filter set. Now everyone gets to search their blog properly, regardless of platform.Â
Separating in-blog search from "Exclude from Tumblr Search and Recommendations"
Did you know that selecting the âExclude from Tumblr search and recommendationsâ setting would also disable your in-blog search? Well, thanks to @lesianlen, now it doesnât. This oneâs already live.
Communities: Granular Moderator Permissions and Promotion FlowÂ
Promoting a member to admin in a Community is a big deal (and currently irreversible).Â
@straku ironed out the promotion flow, adding a simple step to alert, confirm, and prevent promotions that could be to moderation.
Another request is having more control over what moderators can do. A way to give moderators more power, without them overtaking the community admin.
@jubs built a permissions system that lets admins choose what their moderators can do, without compromising their own ownership. In addition to existing moderator permissions, such as removing posts, and comments, you'd be able to allow mods to edit the community appearance (title, description, etc), the community settings (auto-moderation, tags, etc), and even manage other moderators.
Memories in Profile Page & Archive Page
Inspired by Google Photosâ âMemoriesâ feature, Sowmia proposed building a âMemoriesâ experience for the blog to surface nostalgic posts from its history.
The idea was to create a dedicated Memories feature and link it to archive pages, enabling users to rediscover past content in a more engaging way. As part of the hackday, she implemented the archive page portion of this idea, laying the foundation for integrating the full Memories experience in the future.
Post launcher with shortcuts to Drafts and Queue
@ex tried a new version of the post launcher at the top of the dashboard on web: switch blogs before opening the editor, or jump straight to your Drafts or Queue (takes 3-4 clicks to get there now). The buttons also show how many posts you have in your Drafts and Queue.
Reblogs with Videos
After all, why not? Why shouldnât we have videos in reblogs? @andriibuilds dared to ask. And build it.
Like Sorting
People with thousands of Tumblr likes have been asking for the ability to sort and organize them for years. To start, @andriibuilds prototyped sorting options for the Likes page.
RemindMe
Inspired by Reddit's RemindMe bot, @data-science-from-the-trenches built a native reminder system: reply to any post or thread with "RemindMe! 2 days" and you'll get an activity notification linking back to it when that time has passed.
The Mysterious Cat Asks
As a preparation for April Fools, @jubs introduced asks sent by the Mysterious Cat, when you eat an "ask" food in the Snek game. Each question was represented by an item, with its own rarity.
And thatâs a wrap on Tumblr Hack Day, March 2026 Edition. Huge shout-out to everyone who spent this time building cool things, sharing demos, and reminding us how much fun it is to make Tumblr weirder, better, and more delightful.Â
Keep an eye on @changes to see if any of these hacks make it out to you.
Which hack project are you most excited about?
Unified inbox
GIFs in replies
Reblog explorer
In-blog search filters
Separating in-blog search from "Exclude from Tumblr Search and Recommendations"
Communities: Granular Moderator Permissions and Promotion Flow
The reblog is a beautiful thing unique to Tumblr â often imitated, but never successfully reproduced elsewhere. The reblog puts someone elseâs post on your own Tumblr blog, acting as a kind of signal boost, and also giving you the ability to add your own comment to it, which your followers and anyone looking at the postâs notes will see. Reblogs can also be reblogged themselves, creating awesome evolving reblog trails that are the source of so many memes we love. But what is a reblog trail versus a reblog tree, and how does it all work under the hood?
A âreblog treeâ starts at the original post (we call it the âroot postâ internally at Tumblr) and extends outwards to each of its reblogs, and then each reblog of those reblogs, forming a tree-like structure with branches of âreblog trailsâ. As an example, you can imagine @staffâ making a post, and then someone reblogging it, and then others reblogging those reblogs. I can even come through and reblog one of the reblogs:
A âreblog trailâ is one of those branches, starting at the original post and extending one at a time down to another post. In the reblog trail, there may actually be some reblogs that added their own content and some that didnât â reblogs that added content are visible in the trail, while the intermediate ones that didnât may not be visible.
Youâll notice that the reblog trail youâre viewing somewhere (like on your dashboard) doesnât show all of this reblog tree â only part of it. If you open up the notes on any wildly popular post, youâll probably see lots of reblogs in there that you arenât seeing in your current view of the postâs reblog trail. The above diagram shows the whole reblog tree (which you donât see) and the current reblog trail youâre actually viewing (in orange). If you want to visualize a postâs entire reblog tree, the reblog graphs Tumblr Labs experiment shows off these reblog trees and trails as kind of big floppy organisms. Theyâre a useful visualization of how content percolates around Tumblr via reblogs. You can turn on the experiment and see it on web only right now, but hereâs an example:
The tiny orange dot is the post weâre viewing, and the green line is a reblog trail showing how the post got reblogged along many blogs. And there are tons of other branches/trails from the original post, making dozens of different reblog trails. This is a much larger, more realistic example than my simplified diagrams above. You can imagine that my diagram above is just the start of one of these huge reblog trees, after more and more people have reblogged parts of the existing tree.
Storing Reblog Trail Information
The way we actually store the information about a reblog and its trail has changed significantly over the last year. For all posts made before this year, all of a postâs content was stored as a combination of HTML and properties specific on our Post data model. A specific reblog also stored all of the contents of its entire reblog trail (but not the whole reblog tree). If you have ever built a theme on Tumblr or otherwise dug around the code on a reblog, youâll be familiar with this classic blockquote structure:
<p><a class="tumblr_blog" href="http://maria.tumblr.com/post/5678">maria</a>:</p> <blockquote> <p><a class="tumblr_blog" href="http://cyle.tumblr.com/post/1234">cyle</a>:</p> <blockquote> <!-- original post content --> <p>look at my awesome original content</p> </blockquote> <!-- the reblog of the original post's content --> <p>well, it's just okay original content</p> </blockquote> <!-- this is the new content, added in our reblog of the reblog --> <p>jeez. thanks a lot.</p>
This HTML represents a (fake) old text post. The original post is the blockquote most deeply nested in the HTML: âlook at my awesome original contentâ and it was created by cyle. Thereâs a reference to the original postâs URL in the anchor tag above its blockquote tag. Moving out one level to the next blockquote is a reblog of that original post, made by maria, which itself adds some of its own commentary to the reblog trail. Moving out furthest, to the bottom of the HTML, is the latest reblog content being added in the post weâre viewing. With this structure, we have everything we need to show the post and its reblog trail without having to load those posts in between the original and this reblog.
If this looks and sounds confusing, thatâs because it is quite complex. Weâre right there with you, but the reasons behind using this structure were sound at the time. In a normal, traditional relational database, youâd expect something like the reblog trail to be represented as a series of references: a reblog post references its parent post, root post, and any intermediate posts, and weâd load those postsâ contents at runtime with a JOIN query or something very normalized and relational like that, making sure we donât copy any data around, only reference it.
However, the major drawback of that traditional approach, especially at Tumblrâs scale, is that loading a reblog could go from just one query to several queries, depending on how many posts are in the reblog trail. Some of the reblog trails on Tumblr are thousands of posts long. Having to load a thousand other posts to load one reblog would be devastating. Instead, by actually copying the reblog trail content every time a reblog is made, we keep the number of queries needed constant: just one per post! A dashboard of 20 reblogs loads those 20 posts, not a variable amount based on how many reblogs are in each postâs trail. This is still an oversimplification of what Tumblr is really doing under the hood, but this core strategy is real.
Broken Reblog Trails
There is another obvious problem with the above blockquote/HTML strategy, one that you may have not realized you were seeing but youâve probably experienced it before. If the only reference we have in the reblog trail above is a trail postâs permalink URL, what happens if that blog changes its name? Tumblr does not go through all posts and update that name in every copy of every reblog that blog has ever been involved in. Instead, it gracefully fails, and you may see a default avatar there as a placeholder. We literally donât have any other choice, since no other useful information is stored with the old post content.
At worst, someone else takes the name of a blog used in the trail. Imagine if, in the above example, oli changed his blog name to british-oli and someone else snagged the name oli afterwards. Thankfully in that case, the post URL still does not work, as the post ID is tied to the old oli blog. The end result is that it looks like thereâs a âbrokenâ item in the reblog trail, usually manifesting as the blog looking deactivated or otherwise not accessible. This isnât great.
As a part of the rollout of the Neue Post Format (NPF), we changed how we store the reblog trail on each post. For fully NPF reblog trails, we actually do store an immutable reference to each blog and post in the trail, instead of just the unreliable post URL. This allows us to have a much lower failure rate when someone changes their blog name or otherwise becomes unavailable. We keep the same beneficial strategy of usually having all the information we need so we donât need to load any of those posts along the trail, but the option to load the individual post or blog is there if we absolutely need it, especially in cases like if one of those blogs is somebody youâre blocking.
If youâve played around with reblog trails in NPF, youâll see the result of this change. The reblog trail is no longer a messy nested blockquote chain, but instead a friendly and easy to parse JSON array, always starting with the original post and working down the trail. This includes a special case when an item in the trail is broken in a way we canât recover from, which happens sometimes with very old posts.
The same reblog trail and new content as seen above, but in the Neue Post Format:
It's been six years since this was originally posted, but we actually have a small update.
If you have been seeing fewer posts with broken reblog trails, that's because we have been making some improvements on how we handle the old HTML reblogs, making our post resolving logic more resilient against blog name changes.
There will still be cases of broken reblog trails, but hopefully significantly less so.
Hack days are when our team gets to step away from the regular roadmap and work on whatever ideas they so desire. Here's a taste of what came out of it:
Advanced Search
We added advanced search operators in a previous Hack Day. This time, @lesianlen added an exclusion operator to exclude posts that contain a specific word, phrase, or tag. @ex and @blowery helped out to add a spiffy modal that shows exactly how you can use all available advanced search operators.
Search in Communities
Speaking of search, @lesianlen also worked on adding search within individual Communities to find posts and conversations.
"Latest Comments" Community feed
@jubs and @lesianlen worked on creating a tab within individual communities that bumps a post to the top when someone adds a comment. Easily find posts where conversation is hot!
Nudge to Add Moderators
When your community is growing, you need more people to help run it. @jubs worked on a reminder that suggests just that.Â
iOS Home Screen WidgetsÂ
Ben worked on widgets with quick actions and Radar, making Tumblr even more accessible on your home screen.
iOS Shortcuts and Siri Support
@kostastsi4 explored making Tumblr play more nicely with your iPhone: showing quick links in Spotlight to jump straight to your Dashboard, Messages, Activity, or your blog. He also began adding support for Siri and Shortcuts to open specific tabs, start a new post, or search for exactly what you want.
Suggest Tags Based on Post Content
Tumblr runs on tags. However, picking the right tags for your post can be difficult unless you're a Tumblr expert. Our current tag suggestions are a combination of tags you follow, tags you've used before, and some trending tags. @arandomblog31 worked on suggesting better tags based on the post you're writing.
Reblog Explorer
Ever wondered how a post spread across Tumblr? @blowery built a full-screen version of the reblog graph view that lets you explore how a post traveled. Click through the graph to see the full reblog trail update in real-time explore different branches. There's even keyboard navigation â press the up arrow repeatedly to follow the most popular reblog path through the entire graph, or walk backwards toward the original post to see what tags people added along the way.
IdentitiesÂ
@elt began exploring what it would take to eliminate the limitations of secondary blogs.
Some of these will be rolling out soon, others need a bit more time in the oven. Keep an eye on @changes to see when they arrive!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Once again it was Hack Day at Tumblr! You've probably seen one of these posts before. A couple of times per year we slow down our normal work and spend a day working on scratching a personal itch or features we want as user and see how far we can get with our hacks. One thing from the last Hack Week in January made it out: new default blog avatars!
Here are some of the projects that got built for our most recent Hack Day in September. Some of these things you may also end up seeing on the site⌠and one of them isnât included here because itâll likely be a fun Halloween surprise. đť
Advanced search operators
Instead of telling you about this here, we have the extreme pleasure of telling you that this already launched! Read all about it over on the Changes blog. Instead, what we can preview here are some potential new interface elements for these advanced search options, now that we have them thanks to @lesianlen:
âLiveâ engagements on posts
There are many thousands of reactions, likes, and reblogs happening on Tumblr every second. Right now you can only really âseeâ these happen if you are frantically refreshing your feed (which, we know, some of you do). Wouldnât it be neat if the note count, reactions, etc, all update automatically as you scroll your favorite feed (or many feeds at once with Patio)? Check it out this hack from @leogcrespo:
Communities activity tracker
Likewise, some of our beta testing Communities are extremely active, with new members, comments, and reactions flying around. Right now we donât have a way to show those actions, as they happen, inside the community, but we know weâll need something like this. @yi5h hacked together a sidebar widget âactivity trackerâ that shows recent activity happening inside a community in near-real-time:
As always, stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real! Especially the aforementioned-but-as-yet-unrevealed Halloween surpriseâŚ
Once again it was Hack Week (more than just a day!) at Tumblr! This is getting repetitive in the best way. A couple of times per year we slow down our normal work and spend a week working on scratching a personal itch or features we want as user and see how far we can get with our hacks. One thing from the last Hack Week in September made it all the way to a new experiment out to some testers: Tumblr Patio!
Here are some of the projects that got built for our most recent Hack Week in January. Some of these things you may also end up seeing on the siteâŚ
Spoiler text, spoiler blocks, and centered text!
This one is so obvious and amazing, itâs wild we donât already have it. For Hack Week, Katie added the ability to select text in a paragraph to be hidden behind a wall of black that can be revealed with a tap. This can be super useful to hide spoilers. And even better: whole spoiler blocks. And while weâre here, the ability to center text!
A plethora of new default blog avatars
We havenât updated our default avatars in several years. (Some of you may remember this one from 10+ years ago.) Theyâre feeling a bit stale to us, so why not update them? And while weâre at it⌠make a ton more variations! Paul from the Tumblr Design team came up with a suite of new default avatars, using our latest Tumblr color palette. Hereâs a look at some of them, but there are actually many dozens more using different colors:
Notifications and emails about engagement on your posts
This one is for the folks on Tumblr who love numbers and their Activity page. Daniel, @jesseatblrâ, and the Feeds & Machine Learning team worked on some new notifications and emails we could send out to people about how their posts have been doing lately on the platform, such as how many views theyâve gotten, and by how many people. We already have this available (and more) when you Blaze a post, but why not open it up to more people? Itâs really useful to the folks who use Tumblr to help build an audience for their work!
A new way of navigating the web: the Command Palette
Some apps we use a lot have a âcommand paletteâ accessible via a keyboard shortcut for quick keyboard-driven access to different parts of the platform. For example, Slack and Discord have Command + K to access their quick switchers to hop around conversations. What if Tumblr had one? Kelly and Paul built one! Press Command/Control + K on Tumblr and you can use your keyboard to jump to your blog, Activity, your recent conversations, search, dozens of places!
As always, stay tuned to the @changesâ blog to see if any of these hacks make it on Tumblr for real!
Keeping a site like Tumblr alive and snappy for you to post at a momentâs notice, all day and night, is no small feat. Pesky crabs sneak into our data centers and cut cables all the timeâŚ
If you want to help our small but excellent systems team, want to work from anywhere, and are deep into nginx, mysql, kubernetes, and caching, join us in this adventure. Or, if you have a friend or a colleague whoâs good with servers, send them our way.
Once again it was Hack Week (more than just a day!) at Tumblr! A couple of times per year we slow down our normal work and spend a week working on scratching a personal itch or features we want as user and see how far we can get with our hacks. One thing from the last Hack Day in March made it all the way to production: redesigning how direct messaging looks on Tumblr! Pretty cool!
Here are some of the projects that got made for this most recent Hack Week in September. Some of these things you may also end up seeing on the siteâŚ
Tumblr Patio
Maybe this will look familiar to you, but we love this idea of being able to organize Tumblr feeds into many âcolumnsâ side-by-side, creating a very dense but lively view of Tumblr. Lenny, Kelly, and Paul hacked this together, and weâre pretty excited to see where itâll go. Each column can be a different feed on Tumblr, like For You, Following, your Activity, a specific blog, a search, Trending, even a Collection, so many possibilities!
Tumblr Booths
Meanwhile, a separate team of @autoplanes, Katie, @lex, Shaun, and Eve dug into the idea of selling digital and physical goods through blogs on Tumblr, leveraging our sibling platform WooCommerce! Blogs could put whatever theyâd like for sale here, and have a dedicated space for it. We know there are so many amazing artists and artisans here who could use this to more easily sell their creations on Tumblr!
Avatar Frames/Hats
This one is a golden oldie, it keeps coming back hack day after hack day, and each time it gets even better. Santi and Maxime hacked together some example avatar âframesâ and âhatsâ that folks on Tumblr could purchase for their blog. Maybe eventually people could create these and sell them or gift them to each other!
As always, stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real!
StreamBuilder: our open-source framework for powering your dashboard.
Today, weâre abnormally jazzed to announce that weâre open-sourcing the custom framework we built to power your dashboard on Tumblr. We call it StreamBuilder, and weâve been using it for many years.
First things first. What is open-sourcing? Open sourcing is a decentralized software development model that encourages open collaboration. In more accessible language, it is any program whose source code is made available for use or modification as users or other developers see fit.
What, then, is StreamBuilder? Well, every time you hit your Following feed, or For You, or search results, a blogâs posts, a list of tagged posts, or even check out blog recommendations, youâre using this framework under the hood. If you want to dive into the code, check it out here on GitHub!
StreamBuilder has a lot going on. The primary architecture centers around âstreamsâ of content: whether posts from a blog, a list of blogs youâre following, posts using a specific tag, or posts relating to a search. These are separate kinds of streams, which can be mixed together, filtered based on certain criteria, ranked for relevancy or engagement likelihood, and more.
On your Tumblr dashboard today you can see how there are posts from blogs you follow, mixed with posts from tags you follow, mixed with blog recommendations. Each of those is a separate stream, with its own logic, but sharing this same framework. We inject those recommendations at certain intervals, filter posts based on who youâre blocking, and rank the posts for relevancy if you have âBest stuff firstâ enabled. Those are all examples of the functionality StreamBuilder affords for us.
So, whatâs included in the box?
The full framework library of code that we use today, on Tumblr, to power almost every feed of content you see on the platform.
A YAML syntax for composing streams of content, and how to filter, inject, and rank them.
Abstractions for programmatically composing, filtering, ranking, injecting, and debugging streams.
Abstractions for composing streams togetherâsuch as with carousels, for streams-within-streams.
An abstraction for cursor-based pagination for complex stream templates.
Unit tests covering the public interface for the library and most of the underlying code.
Whatâs still to come
Documentation. We have a lot to migrate from our own internal tools and put in here!
More example stream templates and example implementations of different common streams.
If you have questions, please check out the code and file an issue there.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
Well well well, it was Hack Day once again at Tumblr. A few times per year we slow down our normal work and spend a day (or sometimes a whole week) working on whatever we want and see how far we can get with our hacks. Here are some of the projects that got made for our most recent Hack Day earlier this month. Some of these things you may also end up seeing on the siteâŚ
Wesley worked on adding the ability to translate the text content of posts using LibreTranslate, which works really well! We know this is a big pain point for folks who use Tumblr around the world, so weâre excited to keep experimenting with this.
Omar built a Feature Wishlist for the Android app, which has different lists for community-driven and staff-driven feature ideas, with the ability to upvote which ones youâd like the most! Really cool, weâre trying to think of ways like this to expand what we can do to collaborate with the community, like we already do with the @wip and @changes blogs.
One thing thatâs been bugging @blowery forever is trying to figure out who exactly added the tags when youâre viewing a reblog of a post. It can be hard to tell whether the person reblogging it added the tags, or if theyâre meant to come from the reblogged post. To help distinguish this, they hacked together putting the rebloggerâs avatar next to the tags they added at the bottom of their reblog!
@straku hacked together a more modern look for our 1:1 messaging on Tumblr, bringing the message bubbles into a left-and-right back-and-forth format, and using some better colors. Looks a lot snazzier!
As always, stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real!
Ah yes, it was Hack Day once again at Tumblr. A few times per year we slow down our normal work and spend a day (or sometimes a whole week) working on whatever we want and see how far we can get with our hacks. The main star of the last Hack Week was⌠pretty much all of them!
Here are some of the projects that got made for our most recent Hack Day earlier this month. Some of these things you may also end up seeing on the siteâŚ
@yi5h worked on a huge suite of ârewardsâ that folks on Tumblr could unlock by doing various things on the platform, such as reblogging, creating content, even just logging in! Maybe you could earn badges this way to put on your blogâŚ
@straku hacked together a new way of viewing reblog trails. We commonly get feedback that reblog trails are difficult to understand, so styling them differently to make the information clearer is fun to try out!
Meanwhile, Evgeniy built a beautifully simple âBack to Topâ button for the Android app, which does exactly what it sounds like: brings you back to the top of whatever feed youâre currently viewing. No more scrolling, scrolling, scrolling â just one tap!
As always, stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real!
It was Hack Week (more than just a day!) once again at Tumblr! A couple of times per year we slow down our normal work and spend a week working on whatever we want and see how far we can get with our hacks. The main star of the last Hack Week was the âSummon crab!â button, and we loved it so much that we rolled it out not just for April Fools this year, but we made it our first gift-able widget in TumblrMart!
Here are some of the projects that got made for this most recent Hack Week in September. Some of these things you may also end up seeing on the siteâŚ
Tumbeast Digital Pet
Ben worked on adding our friendly server room Tumbeasts to Tumblr as a cute little digital pet. You can feed them and play with them, and they poop and get unhappy and need tending, of course. Who wouldnât want one of these to take care of every day on Tumblr, forever and ever?
Tumblr Blaze on TumblrMart
@adalpari added Tumblr Blaze as a gift-able item in TumblrMart, which would allow folks to buy Blaze "credits" for other people. Perfect for those times you see an amazing post on Tumblr that definitely deserves to be spread around, and you donât mind throwing some money at letting that person have a chance to spread it via Blaze!
User Account Switcher
@yi5h hacked together an account switcher for the web, so that folks can log in to more than one Tumblr account and easily switch back and forth between them. Super handy if you have one account for your roleplaying character, and another for your Star Trek fandom discussions. Very useful!
Tumblr Collections
On web as well, JoĂŁo made a version of an idea thatâs floated around many times, the idea of being able to organize posts on Tumblr into "collections" that can be named and shared. I think everyone would very much enjoy having a collection called "waves" thatâs just soothing GIFs of ocean waves.
As always, stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real!
AKA why are some of my GIFs being turned into videos?
Overview
Weâre experimenting with serving GIFs as MP4 videos instead of GIFV (which typically serves animated WebP) on the web to a small subset of folks on Tumblr, not everyone. This does not affect anyone using the mobile apps.
The performance improvements from using MP4s in this way are huge, and will make Tumblr load animated images faster and use less data in almost every circumstance, with no discernible loss in quality.
This conversion only applies to specific types of GIFs, such as ones without transparency in the first frame. Weâve tested this conversion on thousands of GIFs, and weâre still tuning it to be virtually indistinguishable from the original GIF.
XKitâs âVanilla Videosâ extension was causing a bug with this experiment, but a recent new XKit version release has fixed that issue.
If youâre served an MP4 instead of a GIF, clicking on the image will still open it in a lightbox, which you can download as GIFV or GIF, depending on whatâs served.
Since this is still just an experiment, there is no way to opt-out yet; adding some kind of opt-out (on the creator and/or consumer side) is a possibility though.
If youâre served a GIF as MP4 and it looks wrong, please contact Support with a link to the image and what looks wrong about the conversion. We need examples to help us improve the experience. Also, please do not send duplicate support requests.
What
As a recent Changes post mentioned, weâre experimenting with transforming GIFs into MP4s on the dashboard on web. Our goal is to get GIFs onto dashboards as fast as possible, while retaining as much of the original quality as possible.
For years now, weâve delivered GIFs using our GIFV format, which transparently transcodes GIFs to more modern formats, like WebP, supported by the <img> tag. Weâve made improvements to that process over the past year, better supporting large GIFs and increasing the quality of the transformation, but conversion to WebP has limited benefits. A typical conversion only halves the file size and animated WebP isnât well supported by Safari. Meanwhile, MP4 conversions offer even smaller files, often 8 to 10x smaller than the original GIF, as well as faster loading times and broader browser support.
Weâre being picky about which GIFs get converted to MP4. We only apply the transformation to GIFs that pass our criteria for transformation. Currently, that means GIFs that donât use transparency in the first frame, have constant frame rates, and are under 10 seconds long.Â
Weâve tested this new process against thousands of GIFs from Tumblr, ranging from your typical TV show gifset to pixel art to animated text, and are confident the transformation looks good for the vast majority of content. However, weâre still tweaking the algorithm and are open to feedback. This is a subjective process, and if you see an MP4 that looks worse than the GIF, please send it our way!
Currently, the change only affects the experience within Tumblr (www.tumblr.com). The blog network (i.e. your-blog.tumblr.com) is not affected and continues to use GIFV to deliver GIFs.
Why are we doing this?
As mentioned above, GIFs are almost always inefficient compared to modern formats. Theyâre larger in size, take longer to load, are slower to render, and use more cache space. Whereas our GIFV conversion usually halves the size, the new GIF->MP4 conversion is often 8 to 10 times smaller for film- or TV-like content. We have a lot of that kind of content on Tumblr (go check out #filmedit or #moviegifs) and delivering the content as MP4 makes those tag pages load quite a bit faster, especially on slower connections.Â
As an example, hereâs an original GIF thatâs 3.4 megabytes. Converting it to webp using GIFV gets us down to 2.3 MB, 68% of the original. But converting it to MP4, gets us down to 641K, 19% the size of the original and 5x faster to load. On tag and search pages, where we often show many many GIFs at the same time, this makes a huge difference in the loading and browsing experience.Â
However, Creators on Tumblr regularly churn out hand-tuned, pain-stakingly optimized GIFs that really take advantage of the format. We really donât want to make these look bad â theyâre works of art, and theyâre natively better than these modern competing formats. For now, since this is still just an experiment, we havenât determined yet how weâll handle the ability to opt-out of this change (for creators and/or consumers of GIFs), but we have it in mind.Â
In the meantime, if youâd like to download the actual GIF version of any GIF, just replace the extension on the image url with .gif. So https://64.media.tumblr.com/af554ca5b0e60d313e40c8c47e13824b/d422d5f60551ce04-12/s2048x3072/4b5293df9726acfe461f7eaf661f92acd060dd21.mp4 becomes https://64.media.tumblr.com/af554ca5b0e60d313e40c8c47e13824b/d422d5f60551ce04-12/s2048x3072/4b5293df9726acfe461f7eaf661f92acd060dd21.gif
When
Weâre rolling out this change on the web in phases over the next month. Weâre currently only analyzing newly uploaded GIFs, so existing GIFs wonât be affected for a while. And itâs only rolled out to a percentage of users, so you may or may not see the feature yet today.
Guidelines for GIF creators
Reporting bad conversions
If you found a poor quality conversion on one of your GIFs, weâd love to hear about it. Please contact Support with the URL of the post and let us know which GIFs could be better. Please include what aspect of the transformation is problematic.
How can I preview what my GIF will look like after the transformation?
If you want to see how any GIF would look converted to MP4, just find the media URL for the GIF and replace the extension in the URL from gif or gifv to mp4. This works for any GIF on Tumblr, not just the GIFs that weâve flagged as good candidates, so that we can see what the results could be like.
As a GIF creator, how can I opt-out?
For the moment, adding a single transparent pixel to the first frame of the GIF will opt that image out of conversion to MP4. It will not opt you out of conversion to WebP or other formats that our GIFV implementation may support. Weâre still thinking through what another kind of creator and/or consumer opt-out could look like.
That said, we would love to hear from you! So please send in anything that looks wrong. Also, keep an eye on the Changes blog for more updates about this.
It was Hack Week (more than just a day!) once again at Tumblr! A couple of times per year we grind everything to a halt and spend a week working on whatever we want and see how far we can get with our hacks. Since last time, weâve launched the ability to have a Discord => Tumblr integration, weâre close to launching Twitch embed support, and custom logos are now possible in the mobile apps! And from a previous Hack Day, weâve launched âTimestamps Everywhereâ on web, and weâre working on rolling it out to the mobile apps very soon!
Here are some of the projects that got made for this last Hack Week. Some of these things you may also end up seeing on the siteâŚ
Interacting as a Sideblog/Secondary blog
@designpatternpirate put together a proof of concept for switching to a sideblog/secondary blog when liking or replying to posts. Using this hack, youâd be able to switch which of your blogs youâre âacting asâ when hitting the like button or when replying to a post, to start. Youâd even have separate Likes pages for each blog!
âOne Year Agoâ Dashboard Feed
AndrĂŠ hacked together a feed which shows a portal backwards in time, to what the blogs youâre following were posting a year ago today:
Moving Android notification settings
On Android, Omar moved all of our notification settings out of the Tumblr app and into the Android OS level notifications settings view, like other apps do:
âTime for crab!â đŚ
@superchlorine hacked together a delightful button for the dashboard that summons crabs which scuttle across the page, and even comment on what theyâre traipsing over:
As always, stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Quality
Anya is LIVE right now
FREE
Free to watch ⢠No registration required ⢠HD streaming
It was Hack Day once again at Tumblr! A couple of times per year we grind everything to a halt and spend 24 hours working on whatever we want and see how far we can get with our hacks. Here are some of the projects that got made for Hack Day! Some of these things you may end up seeing on the siteâŚ
Twitch Embeds
Wesley hacked together the ability to post Twitch streams to Tumblr! These can be live streams or clips.
Tumblr to Discord
@cyle put together a very simple webhook integration between Tumblr and Discord so you can send events about your blog to a Discord server:
Custom Tumblr logos on mobile
@mlu, @dakotairene, and friends hacked together the ability for us to put custom Tumblr logos in the mobile appsâ dashboard tab bar, like we do on the web!
Tumblr Time Machine
Lucila constructed an elaborate Tumblr Time Machine, so you can filter search results to a specific year:
Stay tuned to the @changes blog to see if any of these hacks make it on Tumblr for real!
Ten years ago HTTPS wasn't as nearly as widespread as today. It is hard to believe that HTTPS was essentially opt-in, if available at all! Back then, people also had to get creative when inventing means to delegate access to someone else. One solution was OAuth 1, conceived by the IETF, later adopted by Tumblr in 2011.
Time went by, and here we are in 2021, with hardly any popular website not shielded with HTTPS (including your own blog!). Today, it wouldn't make much sense to adopt OAuth 1 as inconvenient as it is. Yet here we are, still asking people to use outdated protocols for their new fancy Tumblr apps. Not anymore!
Starting today, you have another option: we're officially opening up OAuth 2 support for the Tumblr API!
Get started
OAuth 2 flow requires you to know two key URIs:
For authorization requests, you should use /oauth2/authorize
To exchange authorization codes and refresh tokens, you'll need to use /v2/oauth2/token
If you're familiar with OAuth 2, register an application and check out our API documentation (specifically the section on OAuth 2) to get up and running.
The future of OAuth 1
There are no plans to shut down OAuth 1. Your app will continue to work as usual. But be sure to keep an eye on this blog just in case anything new pops up that would prevent us from serving OAuth 1 requests.
What's more, if you wish to adopt OAuth 2 in your app, given its superior simplicity, you don't have to migrate entirely to OAuth 2 at once. Instead, you can keep the old sign-up / log-in flow working, and exchange OAuth 1 access token to OAuth 2 tokens on the fly. There's only one catch: this exchange will invalidate the original access token, so you should be using only the OAuth 2 Bearer authentication for any subsequent requests.
Next steps
We'll be adding support for OAuth 2 to our API clients in the coming months. Follow this blog to learn firsthand when this happens.
Although we do support client-side OAuth 2 flow, we can't recommend using it unless absolutely required. We might harden it with PKCE someday, though.