Skip to content

Instantly share code, notes, and snippets.

@Prof9
Last active December 2, 2025 23:08
Show Gist options
  • Select an option

  • Save Prof9/c16fc4997e0ef5b22a15c43edd7f5f49 to your computer and use it in GitHub Desktop.

Select an option

Save Prof9/c16fc4997e0ef5b22a15c43edd7f5f49 to your computer and use it in GitHub Desktop.
THIS SCRIPT NO LONGER WORKS! Twitter has rolled out a fix for the web client hack. (Original text: Force enable cramming (280 character tweets) on Twitter. Use TamperMonkey. NOTE: Stops working when you switch pages, refresh to fix.)

As of 7 November 2017 everyone has access to 280 characters in supported clients, so you no longer need this script!

// ==UserScript==
// @name Twitter Cramming
// @description Force enable cramming (280 character tweets) on Twitter
// @author Prof. 9
// @version 0.1
// @match https://twitter.com/*
// @run-at document-idle
// @namespace prof9.twittercramming
// ==/UserScript==
var initDataInput = document.getElementById('init-data');
var initData = JSON.parse(initDataInput.value);
initData.deciders.cramming_feature_enabled = true;
initData.deciders.cramming_ui_enabled = true;
initDataInput.value = JSON.stringify(initData);
// This is free and unencumbered software released into the public domain.
//
// Anyone is free to copy, modify, publish, use, compile, sell, or
// distribute this software, either in source code form or as a compiled
// binary, for any purpose, commercial or non-commercial, and by any
// means.
//
// In jurisdictions that recognize copyright laws, the author or authors
// of this software dedicate any and all copyright interest in the
// software to the public domain. We make this dedication for the benefit
// of the public at large and to the detriment of our heirs and
// successors. We intend this dedication to be an overt act of
// relinquishment in perpetuity of all present and future rights to this
// software under copyright law.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// For more information, please refer to <http://unlicense.org>
@joridiculous
Copy link
Copy Markdown

joridiculous commented Sep 27, 2017

Your Tweet was over 140 characters. You'll have to be more clever. .. Well that's no fun :/
Nope. This refuse to work for me :(

Copy link
Copy Markdown

ghost commented Sep 27, 2017

doesn't work here (France)

edit : works after clearing cache

@willicab
Copy link
Copy Markdown

willicab commented Sep 27, 2017

not work for me, in web console appear this error

ERROR: Execution of script 'Twitter Cramming' failed! initDataInput is null

I'm using Firefox Nightly 58.0a1

@if1live
Copy link
Copy Markdown

if1live commented Sep 27, 2017

In CJK (Chinese, Japanese, Korean) and other language, cannot tweet long text.
So I made a CJK patch.
https://gist.github.com/if1live/bc4750c0d4585789b66d899129ecb9ad

Cause

  • code 0~4351 : weight 100
  • code 4352~65535 : weight 200

ab is in code 0 ~ 4351, total weight is 100 x 2 = 200.
is in code 4352 ~ 65535, total weight is 200 x 1 = 200.
double weight means half length.

https://abs.twimg.com/k/en/0.commons.en.e6c61ddd975ec97b1ee5.js

, r = o({}, a, {
version: "cramming",
max_tweet_length: 280,
default_weight: 200,
    ranges: [{
        start: 0,
        end: 4351,
        weight: 100
    }, {
        start: 4352,
        end: 65535,
        weight: 200
    }]
})

Solution

Access above config(TwitterTextOptions), then modify weight 200 to 100.

@hikari-no-yume
Copy link
Copy Markdown

NOW I CAN POST 280-CHARACTER TWEETS IN JAPANESE

JACK KNOWS NOT WHAT POWER HE HAS HANDED ME

MUAHAHAHAHA

@hinaloe
Copy link
Copy Markdown

hinaloe commented Sep 27, 2017

emoji is not in their char code because it based on 2 or more chars (surrogate-pair).

Ex: 😇 is 55357 + 56839
And some japanese kanji has same issue (𠮷、𩸽、and some……)

but Twitter API count that as 1 char. with default_weight: 100, it will be fixed.

https://gist.github.com/hinaloe/c2381b1370371f5d9a4bb2be190f9c66

@Shugabuga
Copy link
Copy Markdown

Shugabuga commented Sep 27, 2017

It does work as intended, but the character counter seems to be broken.

Either way, thanks for making this simple to use!

@erydactyl
Copy link
Copy Markdown

@colemickens, I have just put the TweetDeck version in a Userscript if that is any use. It is a bit messy/hacky but it works. https://gist.github.com/erydactyl/8ac7fe290a5ea72706cc1b77d15163d9

@Raw3a2011
Copy link
Copy Markdown

I want to large it 280
https://goo.gl/Yms5au

@LongHairedHacker
Copy link
Copy Markdown

Hi,
I've just hacked a version that survives switching pages.
No more refreshing,this is 2017 after all.
https://gist.github.com/LongHairedHacker/2b4e2a526f02906acbafe39229176b08
Feel free to integrate that here.

@joridiculous
Copy link
Copy Markdown

Cant get either of these to work :(

Copy link
Copy Markdown

ghost commented Sep 27, 2017

doesn't work anymore :/

@plasma-node
Copy link
Copy Markdown

Broken

@Prof9
Copy link
Copy Markdown
Author

Prof9 commented Sep 27, 2017

Yep, Twitter rolled out a fix. You'll have to try one of the other methods out there to get your tweet on.

Here are some that work for TweetDeck:

@Nodws
Copy link
Copy Markdown

Nodws commented Sep 27, 2017

Damn snitches

@DonkeyKongJr
Copy link
Copy Markdown

Are there any hacks for Tweetbot?

@bloggingcurb
Copy link
Copy Markdown

nothing here works... :-(( still at 140

@SnowyWorld2
Copy link
Copy Markdown

off

@barripdmx
Copy link
Copy Markdown

Not work

Copy link
Copy Markdown

ghost commented Oct 1, 2017

wait, so is this working

@CollinChaffin
Copy link
Copy Markdown

Frustrated that like most I was not blessed with the new 280 char tweeting, and the "fixes" out there don't work anymore, I decided to fix :) As as a fully automatic #Greasemonkey #Tampermonkey script here: http://bit.ly/unlock280 Get your #280tweets on while you can! :)

Kickass

@kozjegyzo
Copy link
Copy Markdown

@CollinChaffin Thanks Man, this works like a charm!

@HuproZ
Copy link
Copy Markdown

HuproZ commented Oct 4, 2017

@CollinChaffin You, sir, are the man of the situation.

@NDBellisario
Copy link
Copy Markdown

@CollinChaffin Thank you, You sir are awesome! 👍

@CptSpaceToaster
Copy link
Copy Markdown

Looks like the party's over

@patrickcoombe
Copy link
Copy Markdown

No longer working - Like us, The good folks at @twitter appear to have found a workround for this. It was fun while it lasted :)

@tradhakrishnamurthy
Copy link
Copy Markdown

sir, are the man of the situation.

@jehanggg
Copy link
Copy Markdown

@mohamed1234p
Copy link
Copy Markdown

12

@smbz20
Copy link
Copy Markdown

smbz20 commented May 8, 2023

TD.services.TwitterClient.prototype.makeTwitterCall=function(b,e,f,g,c,d,h){c=c||function(){};d=d||function(){};b=this.request(b,{method:f,params:Object.assign(e,{weighted_character_count:!0}),processor:g,feedType:h});return b.addCallbacks(function(a){c(a.data)},function(a){d(a.req,"",a.msg,a.req.errors)}),b};
twttrTxt=Object.assign({},twttr.txt,{isInvalidTweet:function(){return!1},getTweetLength:function(){return twttr.txt.getTweetLength.apply(this,arguments)-140}});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment