Greasy Fork

Shined up real nice.

Tumblr - Mass Post Features

Multi-select box, Queue or Drafts Edit, Mass Reblog Archive/Dash/Tagged/Likes, Select or Show by Tag or Type, Backdate, Schedule, Caption, Link, and more

This script has been deleted.

Daily installs
Total installs
30 5 1
Applies to

Author's Description

Feb 13, 2017 3.10.8 One small change to correct the pagination on the reblog from tagged. My timestamp was about 3 seconds off.

Dec 1, 2016 3.10.7 I found a mistake in the "blogs" menu that misses the reblog as drafts option when you only have one blog. I never discovered this until I recently deleted all my blogs. Fixed! (better late than never)

July 13, 2016 3.10.6 Updated with the new setTumblelog function.

Mass Post Features, version 3 (For the Tumblr Mass Post Editor)

version 3.10Three new Mass Reblogging Pages!
The reblogging from shared likes seemed to be a hit, so I added reblog from Archive, Tagged Pages, and Dashboard following the same basic principle.

Version 2 stopped working over 11 months ago, because Tumblr switched from prototype_and_effects.js to jquery.min.js and I was away for the whole time, therefore could not fix it. I did update version 2 in February 2014 to use jQuery, but it was still imperfect.

Mass Post Features script adds the following features to the Tumblr Mass Post Editor:

Editor Mode Buttons
  • Mass Queue Edit!

    Edit the posts from your Queue!

    Also has a button to mass publish posts.

    - - - - - - - - - - - - - - -

  • Mass Draft Edit!

    Edit posts from your Drafts!

    Also has buttons to mass publish selected posts,

    or add selected posts to Queue.

    - - - - - - - - - - - - - - -

  • Lite Mode

    Display the posts as inline elements to reduce the processing load of the brick position masonry.

    (This should only be used as a last resort, if the editor features are being crashy. This might cause the editor to behave strange, as it's not very tested.)

    - - - - - - - - - - - - - - -

The Mass Post Features
  • Select posts with a selection box!

    Drag the mouse to draw a box to select multiple posts. Hold shift key to select more, just like selecting icons on your desktop.

    - - - - - - - - - - - - - - -

  • Re-As Draft!

    Re-post the selected posts as drafts! This will make the old post into re-publishable draft, that when posted will be a new post again, and the notes should be kept. Do it as many times as you want; it's the closest thing to pinning a post, because it goes back to the top of the dashboard for the moment like any new post.

    In this version, I painted it orange, so it doesn't get mixed up with the Drafts Editor button. Also use moderately; the notes were always preserved when I tested it, but I did get a message of a user saying her notes were not preserved, so orange represents this might behave funny.

    - - - - - - - - - - - - - - -

  • Edit and View Links!

    Want to view the post on your blog, or go to the edit page for an individual post? Turn these links on.

    It looks like this.

    Links will open in a new window/tab. When done, click the "Hide Links" button.

    - - - - - - - - - - - - - - -

  • Gutter Size!

    Type in any pixel amount, to change the gap in between the posts. This could be handy if you aren't very good at playing Where's Waldo to click on your post.

    It looks like this.

    - - - - - - - - - - - - - - -

  • Mass Backdate Posts!

    Backdate any selected posts. It will go back as far Tumblr allows, like normal post backdating.

    Use just 1-date for all selected posts, or stagger the backdate in between 2-dates. Same options apply to post time. Or you can leave date or time alone and use the post's actual date or time, and just change one or the other.

    (Just like any backdating on Tumblr, it does not change the order or position on the dashboard, but the order does change on your blog and in the Mass Post Editor.)

    - - - - - - - - - - - - - - -

  • Mass Caption or Clickthru Links!

    This applies to photo posts only; change the selected photo post's caption or clickthru link, or just one or the other.

    This is what it looks like.

    Tumblr rules apply. Tumblr changed the rules for clickthru links. Now you can only make a clickthru link on original posts and not reblogged posts.

    - - - - - - - - - - - - - - -

  • Mass Make Private!

    Make the selected posts into private posts, or if private posts are selected, make them un-private when the button says un-private.

    - - - - - - - - - - - - - - -

  • Show Only, Select By, Un-Select By!

    Show Only!

    Show only certain post types, like "text post" or "reblogged", or you can show only posts with certain tags, or a combination of any of the selected checkboxes. Or apply the NOT checkbox, to show posts without those types or tags. Now you can also go by tag count, more less equal to, or something similar with note counts!

    This is the menu.

    Want to show only the most common tags? Hide tags used less than a certain number of times, by typing in a number in the # of times box. Or click the checkbox next to that option, to hide tags used more than a number of times, to only show the most rare used tags.

    - - - - - - - - - - - - - - -

  • Select By!

    All the same rules of the "Show Only" box apply, but instead it will select those kind of post types or tags, 100 at a time, as per Tumblr's default selection limit, and if a 100 posts are selected, you can select the next 100.

    - - - - - - - - - - - - - - -

  • Un-Select By!

    It's the opposite of select by. Unselect, by a certain tag, type, note count, tag count. Sometimes you may want to exclude things from your selection?

    - - - - - - - - - - - - - - -

  • Select All!

    Select all posts, or at least 100 at a time, with an option to select the next 100, when there is already 100 selected.

    - - - - - - - - - - - - - - -

  • The default Tumblr buttons work too!

    Tumblr's default Mass Post Editor features coexist with this script's featurs and work just the same. The only thing changed about them, is the unselect button, will show the count of posts that are selected, and I painted the "delete" button red, because I once misread it as a "deselect button" and I think a button as dangerous as delete should be red. I also decreased the font size and padding/margins a little bit so I could squeeze all of the new buttons onto the blue bar.

    - - - - - - - - - - - - - - -

  • Menu for your other blogs!

    With this menu, you can visit your other sub-blogs, go to the Mass Post Editor of your other blogs, or move all the selected posts to another blog as copies or as reblogs. If you don't want to flood the dashboard when you re-post or reblog all the selected posts to your other blog, click the "New posts as Draft..." checkbox and they will go into the drafts page of that sub-blog.

    The Mass Post Features will work in the Mass Post Editor of all your sub-blogs as well.

    - - - - - - - - - - - - - - -

It should work in Greasemonkey for Firefox or Tampermonkey for Chrome. I have not tested in Opera. Opera users should know how to set this up if they've used scripts before. I'm not an Opera user.

Friendly reminder that this script isn't perfect. Sometimes the API breaks on Tumblr's end for brief periods of time and I don't know why.

Aug 27, 2015 - no update, just an announcement... I decided to delete my Tumblr account today, because Tumblr had turned me into an overweight screen scrolling zombie. As I no longer have a Tumblr account, I will no longer be able to manage and update this script. I dangled a GIST of the latest final to the new xKit guys. I'm not entirely sure if they will use it with their addon or not. Sorry if this script breaks in the future. Deleting my Tumblr felt like finally releasing a 2010 - 2015 sized dump from my belly.

Aug 8, 2015 - update 3.10.5 - The new post/reblog without tags option was accidentally running on edit functions outside of new/reblog (if checked). Fixed. Also the Opt 100 more was selecting the last post redundantly. Now it starts on the next after last.
Aug 6, 2015 -
update 3.10.4
- OK the 100 opt more need one more thing.
update 3.10.3 - I wish I caught all this before, but here is another quick update before I go to bed. The API has different post type names for some, like text instead of regular or chat instead of conversation. This was preventing select by certain types. It's now corrected in this version. I also realized Opt For 100 more should be reset when you uncheck a box. Much fixed.
update 3.10.2 - I thought I fixed this once before, but the pause button wasn't coming back on after it was already done on the main editor page. Also bugs that I fixed once before since I cloned the new archive api fetch from the other page html fetch function, I found an undefined variable in the title of the posts. It didn't seem to break anything, but it's now fixed too.
Also thinking about cleaning up the old change-log so it can just be about the features. For now, I just made all the surplus update banter <small>
update - 3.10.1 - I must've bumped the keyboard, because it was missing a single character that broke it after testing. Good thing I double tested.

Archive fetches post from the API rather than HTML like Queue/Drafts/Likes/Dash/Tagged pages, so it might need tweaking, but it seems to work just as good.

Aug 4, 2015-
update 3.9.14 -
I think I've finally pinpointed the random missing blog menu. It's my sloppy regex. Ever since Tumblr removed the blogs from the HTML, I've been using regex to capture "tumblelogs":[objects]}, but if a title or description has a square bracket, it gets prematurely closed. None of mine have that so it always worked before. I made a better method of getting that array, and now I have to update 10 userscripts that had the old regex.
update 3.9.13 - I found a single missing semicolon, that I think might be the cause of konfav's missing blog menu, and added it.
update 3.9.12 - The previous version did not fix konfav's missing blog menu. I'm blind on how to fix it for him. I've come across a problem in my other script that I think could be causing his missing menu in this script. I added a split to only search for the blog names after the posts block (in case there is a similar matched string in the above html). I've also added a fallback, but it's not satisfactory. The fallback only gets about 5 of my 14 blogs. I really need to see the page source of his dashboard to make a better fallback. If anyone else is having this problem, drop a line in my inbox.

Aug 3, 2015- update 3.9.11 - I've been working on a blind bug with another blogger. It seems the fetch blog names ajax is broken (probably something leftover from my lazy conversion from prototype functions). I'm unable to reproduce this bug in the latest Firefox/Chrome Mac, so this line removal is a guess. I removed the data-type => html from the fetch blog names ajax because it's the only thing that the other working ajax doesn't have. In theory this change should fix a missing blogs menu.

July 27, 2015- update 3.9.10 I found some bugs with the new keyboard jump to tag letter. Fixed.

July 26, 2015
update 3.9.9 - Yikes! This should have been in 3.9.5! I found a redundant array pop that was causing only every other draft/queue to publish with the new publish function. I'm so sorry. I don't know how it ever worked in earlier tests. It's fixed.

update 3.9.8 - Upon further testing I found some more bugs when trying to reblog with a private post selected. Note to self: Clean up this massive change log soon and just describe the features.

update 3.9.7 - I found out what was wrong with certain reblogs. It was only breaking on posts that were reblogs with a different root, because I was accidentally reblogging with the root source id and not the actual rebloged id; a major fix. Also included in this update are 2 feature additions to the select-by/show-only widgets. Now you can show only or select by duplicates. The latest clone is highlighted purple.

It's not perfect as it only selects dupes by html brick similarity and not any reference to the total post. Two text post with no text/ different images show as duplicates because of the no text.
Now also in the tag widget window, you can start typing any tagged name and it will scroll to that tag. It's just like selecting a file in Finder with the keyboard.

update 3.9.6 - I seem to have trouble reblogging certain text posts. I added a skip fail safe to prevent total freeze of all edit features because one post is stuck processing. This might appear that more posts are being skipped, but it's doing more now because it skips the freeze posts. The pause button was not the culprit of this if you were wondering. I can't figure it out yet so this is a lazy update and just a workaround rather than a fix. It does it on the exact certain posts every time, svc/post/update is 404, but I need to investigate deeper. Please send me an ask or hit the bug report forum to let me know which certain posts are always getting skipped.
I also just realized I forgot to update the 3.9.5 version caption. If Greasemonkey shows 3.9.6 you got the right version, but the caption in the HTML will still show 3.9.5. It's just as well because nothing is really fixed since the prev, only avoided...

July 17, 2015 - update 3.9.5 This is a very important update, though it may be too late for people who used Re-As-Draft and lost their notes. I was writing another queue to draft script when I discovered Tumblr's ajax to /publish (though for some reason still publishes) is no longer used. Now it seems edit and new post are both done with /update. This dead-active url was the thing giving new post IDs to published drafts and making them lose notes. It's still too early to confirm, but I think this change will make Re-As-Draft have spared notes (according to my testing).

July 10, 2015 - update 3.9.4 I took out the wait for images to load for the queue/drafts/likes. I put it in to prevent crashiness, but it was almost more crashy with all those onload events and also it loaded bricks slower. I also found a year old problem with my Tumblr date string to timestamp function. It was hours/minutes off which did no problem, but I really needed it to get the time stamp for a new feature I was working on the pagination for the tagged page, requires the timestamp of the last post which is only a relative date string in the HTML. It will never work, because if it's one microsecond off of Tumblr server time, it doesn't fetch the next tagged page. Tagged reblogging might have to be done on the search page itself with another userscript.

July 9, 2015 - update 3.9.3 mxdvs caught this error. The pause button wasn't working in the drafts (as well as the queue and the new shared likes page) I found a duplicate click event that was running the function twice causing it to pause and instantly unpause. It's now fixed.

July 8, 2015 - update 3.9.2 This update should have been in today's version or at least the following version which I temporarily screwed up. I discovered the permalinks have a different name than queue, which is why the like pages weren't month-grouping correctly. Then I took a function out of a loose boolean only to find it needs to be in that weird both ways boolean to run, so 3.9.1 was a failure to takeoff, but I already uploaded it by mistake, so here is the latest version.

version 3.9 - I got a request for a new feature to reblog your likes. I did one better and made it anyone's shared likes. The only setback is your own likes need to be shared, which is only redundantly fair because reblogging them is sharing. You can go to a shared likes page inside the MPE and all editing editing features are disabled (you can't edit their posts) except the reblog buttons in the blogs list drop-down menu.

*misspelled whose in this screen ^
July 7, 2015 - update 3.8.4 Third update tonight. I noticed Tumblr has a problem escaping the tags in the remove tags widget (with or without my script). This is weird. Maybe it's a sign they are updating the MPE. I also corrected the private post tags fetch once more, because the JSON made the tags a comma separated string instead of an array. When I have to correct Tumblr built in bugs, it could be a good sign. Maybe they will give the MPE a makeover soon.
update 3.8.3 Another error tonight. This time I found a fatal error caused by a new function I recently added from the private post fetch queue. I made the recursive part run only if it's a function, but I neglected to do the same for the very first function in the queue. It's now fixed.
update 3.8.2 This just goes to show I need to test more because I found a lingering error from the conversion to jQuery version from the prototype library version 2. It seems I never rewrote the Opt 100 more for the select by tag/type. As nostalgic as this makes me to find, it was still a huge problem and it's now fixed. It just goes to show you, don't be afraid to report problems in my ask box or Greasy forum. The way I write script, it's most likely not just happening for you, but for everybody. I also renamed it to "Opt For 100 more" because with incremental post loading, sometimes you'll won't have 100 selected yet, but there will be more to select.

July 3, 2015 - update 3.8.1 This should have been in the version I just uploaded today, but I missed to add the count of original posts to the counts feature. That's now included. When I did that part, I also noticed private posts weren't showing reblog or original so added to the fetch info function for private posts. That still doesn't have note count on private. I also realized my bookmarklet embed runs slower than the Greasemonkey version, so that helped me catch my flaw in the private fetch info ajax, so that now runs one at a time instead of all at once.

version 3.8 - This version has a new counts feature. I really feel bad because this was from a valid feature request by Jen215, but I wrote it off as a confusing feature because the only total counts I can make is by counting the elements which load streaming 20 posts at a time, and also the counts wouldn't be accurate in jump to month pages, so I suggested count by 100s with the select by, and she reported that she did it that way and she had 7,500 posts and it took her two days. So this new feature is to make up for my bad suggestion.

It will show the counts for all post types and tags. It is only the count of posts loaded, so it will continually go up as posts load. The blue count is how many you selected, and the purple count is all.

I foresee the total of all notes will be a ridiculously huge on blogs with a lot of reblogs, so if it's cut off, mouse over and the tool tip will show the whole number.

I also took out the shameful link to my blog and turned it into a span that just shows version. People should already know where to find me; no reason for that link to get in the way of buttons.

Jun 15, 2015 - update 3.7.2 This fix had a long time coming. I never noticed video thumbnails were broken on drafts/queue ever since way back when Tumblr got rid of the retro black and white vid thumbs in place of the autoplay/mute things. This update corrects thumbnails for Tumblr uploaded videos and Youtube. I never would have noticed it until I started a boredom video blog. The majority of external videos, I can't really test them all, but I'm hoping the Youtube method is cover all embeds. Just goes to show you, there can always be something broke for a long time until I stumble upon it. Don't be afraid to send me bug reports or feedback. :)

Jun 2, 2015 - update 3.7.1 - I only added one line, but this is a huge update to a serious problem! This is a must-get update especially if you use my batch photo upload script (the only posts seemingly effected by this bug). When you edit posts, /update doesn't want to know the url of photos rather it wants a blank "" string to know that the photo should stay the same. My new_post boolean that was supposed to do this, only it thinks new_post means NOT reblog which is a property that might be undefined. Everything seems to work with this boolean except for it was re-posting the URL for photos[o] which was causing photo links to become 404 with all editing functions. I added a new edit boolean to solve this major problem. I may be correcting the new_post boolean in the future if it's causing other complications, but that part seems to be doing it's job as intended.

May 31, 2015 - version 3.7 - I got a feature request in my ask box for mass source linking like the mass clickthru linking. I got it working, but I don't think you can source reblogs as their source is always default the original poster. The documentation I found on source links was kind of old.

I also rearranged the button rows, so modes are all together and post edit features are all together. I also got rid of my silly blue bar graphic, because I decided to K.I.S.S.

May 8, 2015 - version 3.6 - I go up a second number every time I add a new feature and I just added some new captions features.
  • The first feature allows you to prepend or append to the caption instead of just overwrite it. It also now works with audio and video posts. It was able all along, but I forgot to add those in the included selected bricks. It might be buggy yet. It won't append or prepend if the html already exists in the caption. This is meant to prevent duplicate additions, but it might cause trouble if you want repetitive captions. It was suggested on the script forum by Ash.
  • The other feature allows you to show (and hide) the captions for photo, audio, video posts. I feel this is necessity for caption editing and overall mass editing.

Since I've added a few features lately, I might need to update the general post body with all the features some time.

April 22, 2015 - update 3.5.8 - I got a vague feature request in a form of a complaint that I broke the Add Tags Widget. This fix is based on what I'm guessing the problem is. Despite the added buttons (I also just added some CSS about that overlap) the Add Tags Widget is just as default. It's like the MPE is an abandoned relic from 2010 they discontinued dev on other than CSS updates. The autocomplete has always been bizarre and somewhat broken for me, with or without my script. I'm not sure how to fix that part because I'm not sure how it was intended to work. I did change the click on the submit button to change the remaining input first so you shouldn't see
this error: when you submit the form before submitting the tag, anymore.

April 20, 2015 - update 3.5.7 - I got a complaint that I took out the ability to switch between queue and drafts from the opposite pages, instead having to go back to main edit each time to get the link back. I'm sorry. When the inner page switch broke, I was too lazy to find out what exactly broke it, so I just lazily took the inner page link out of the opposite inner page. I finally got off my butt and found out what broke it, so now you should be able to switch from queue to drafts and vice verse without needing to go back first. I also found a bug with scheduled posts showing undefined for the day of the week, which was just a cosmetic error, but it might of caused more problems. So two things are fixed in this version. The page switch might still have issues yet, but I failed to find anymore during testing.

April 12, 2015
update 3.5.6 -
The issue brought up by Ariadne caught a related mistake, that I was relying on my tag functions meant only for queue and drafts in the main editor. This of course caused the delay in year old posts on jump-to-month, but I also realized this prevented the editing of tags on private posts. I just returned the edit tags onclick to the way it was, but only put it in the queue and drafts edit (because the /get_tags_for_posts doesn't currently work in the queue and drafts).

update 3.5.5 - I had a fear of this script running my server resources high for the homemade post number JSON, used to skip ahead the offset for API features (tags, note count, etc.). I replaced it with with a recursive API read (still async) until the first post of a month is found. For my personal tests of 3.5.4 and 3.5.5, it seems to work at the same speed, but then again I don't have much to go back and test on. I'm going to need Ariadne's opinion on how fast either version works.

update 3.5.4 - A slight fix for people having problem with tags taking forever to load on months back. If you don't have more than 1000 posts, or never go back to certain months years, you probably wouldn't notice this bug. The problem is the info is gathered from the API, starting on the latest post, but if you are months back, you don't need the tags from the latest month hence there is a long wait for it to get up to the posts that you are actually on. Ariadne discovered this problem because he has over 24,600 posts. This fix might cause problems with backdates yet. I don't have much to test with so far. I'm going to see how it works for Ariadne. I had to write my own API, because post number is not included in the API. (that I know of)
April 11, 2015 - update 3.5.3 - Just a small fix. The server number of the widget background img changed for some reason. It was on my dash as 31, but now it shows up as 41. This update fixes the broken background of the widgets. It's not a default graphic; back in v1 I got a request to make it bigger.

April 10, 2015 - update 3.5.2 - Tumblr changed the menu of secondary blogs my script was referring to, so I had to refer to the new dropdown to get the secondary blogs. Also a gentleman found a bug with my mass reblog feature as drafts. I found out I broke it when I changed my post string into JSON.stringify and I found out I left out the post[state]=1 for the draft checkbox. It's now corrected.

March 1, 2015ANOTHER FEATURE - version 3.5.1 - I thought of this soon after uploading 3.5, and it's the same day so I'll include this feature and a half in the 3.5 day. I added two more options to the add tags widget. "From Select" and "X-all". It will clone all the tags from the selected posts, so you don't have to type so much for common categories. X-All will remove all the tags from Add Tags. It's x, not remove, which is the other widget. It maybe redundant of "cancel", but my cancel doesn't clear all the typed in tags-to-add. These might not be very handy the way I thought of it, and if anyone asks, I might make a special selected tag clone to do only from one selected post instead of all of them in the future. Nobody suggested it so my own ideas rather than suggestions might not be so hot.

version 3.5 - I was reading my Disqus comments (which I should do more often) and I realized I got a request for Mass Schedule posts. So I simply reversed the backdate feature to make queue posts as well. Schedule drafts and queue posts; they end up in the queue and also follow Tumblr rules 300 post limit I think.

Jan 30,2015 - update: 3.4.5 - I accidentally left in the escaping function after I switched the edit post object to JSON.stringify, so it was escaping redundantly for edited posts. Once again gracefulally caught my mistake. Oops :(
Jan 21,2015 - update: 3.4.4 - I just found an error with mass backdate stopping on the very last post, because of my latest change. I corrected the fatal error in this version.
Jan 16,2015 - update: 3.4.3 - .1 Tumblr's CSS was corrupting the appearance of my select-by/show-only tag widget so I added a small bit of CSS to correct it. Also the report of crashes with the show only, made me consider the jQuery children function used by Tumblr's masonry. It was depending on reading and setting offset top which was returning 0 for the null bricks hidden by show only. I've already modified the jQuery children function to exclude the hidden bricks, but I don't think my method was cross browser, so I altered my references to window.$ and window.jQuery specifically for those functions. I hope this prevents crashes. I'm still waiting to hear from the bug finder. EDIT .2 Another small CSS correction. EDIT .3 fount a bug with tooltip created by mass backdate. The backdate was working correctly, but the tooltips of fresh bd posts were all showing the same (wrong) date. It now shows the correct backdated date when you rollover. It was just a cosmetic error.

Jan 15, 2015 - version: 3.4 - major bug fixes and fatal error fixes. My fetch_edit_submit function was haphazardly submitting a homemade string, which of course suddenly found a newline or a terminating double quote and broke :( I remodeled the whole thing and scrapped the huge string function plus_o. "gracefulally" from the forum noticed my error, but my replace and escape quick fix was too little too late. The whole thing now runs on JSON.stringify :) I also changed the editing/publish ajax into a 1-by-1 ladder, so it no longer has errors due to the stooge effect (publishes posts in the correct order as well).
Jan 10, 2015 - version 3.3.2 - gracefulally caught an error with my post submit string because I didn't remove newlines or escape quotes that causes a fatal unterminated string literal. I just added the escape to hurry up, but in my next version, I might do away with that wonky post string altogether and replace it with jquery.param or JSON.stringify or something better.

Another helpful script for those who are on their drafts/queue looking to get to the Mass Post Editor.
It will create the Mega-Editor link on those pages, so the link is not just on the posts page.

For more information, or my other scripts, visit

Or my Tumblr blog that I only use for testing.