Create a gist now

Instantly share code, notes, and snippets.

@Prof9 /Readme.md
Last active Mar 19, 2018

What would you like to do?
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>
@colemickens

This comment has been minimized.

Show comment Hide comment
@colemickens

colemickens Sep 27, 2017

There doesn't happen to be a version that supports TweetDeck, is there?

There doesn't happen to be a version that supports TweetDeck, is there?

@Prof9

This comment has been minimized.

Show comment Hide comment
@Prof9

Prof9 Sep 27, 2017

@colemickens Not a userscript, but there is a way to get it working. Takes some more setting up though. See: https://twitter.com/Zemnmez/status/912876877391335424

Owner

Prof9 commented Sep 27, 2017

@colemickens Not a userscript, but there is a way to get it working. Takes some more setting up though. See: https://twitter.com/Zemnmez/status/912876877391335424

@wongmjane

This comment has been minimized.

Show comment Hide comment
@a1exDi

This comment has been minimized.

Show comment Hide comment
@a1exDi

a1exDi Sep 27, 2017

thx! its work

a1exDi commented Sep 27, 2017

thx! its work

@Qix-

This comment has been minimized.

Show comment Hide comment
@Qix-

Qix- Sep 27, 2017

Doesn't appear to work. The 140 character limit is still imposed. Downloaded and installed as a Chrome userscript via the chrome://extensions page - is there something extra that has to happen?

Qix- commented Sep 27, 2017

Doesn't appear to work. The 140 character limit is still imposed. Downloaded and installed as a Chrome userscript via the chrome://extensions page - is there something extra that has to happen?

@Revod

This comment has been minimized.

Show comment Hide comment
@Revod

Revod Sep 27, 2017

@qix I just installed the Script, sent a tweet as test. Show to me 140, I sent 280 and successfully posted without problem

Revod commented Sep 27, 2017

@qix I just installed the Script, sent a tweet as test. Show to me 140, I sent 280 and successfully posted without problem

@ixtrunai

This comment has been minimized.

Show comment Hide comment
@ixtrunai

ixtrunai Sep 27, 2017

It works but 140 chars counter still there, any way to change it?

It works but 140 chars counter still there, any way to change it?

@joridiculous

This comment has been minimized.

Show comment Hide comment
@joridiculous

joridiculous 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 :(

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 :(

@BZHDeveloper

This comment has been minimized.

Show comment Hide comment
@BZHDeveloper

BZHDeveloper Sep 27, 2017

doesn't work here (France)

edit : works after clearing cache

BZHDeveloper commented Sep 27, 2017

doesn't work here (France)

edit : works after clearing cache

@willicab

This comment has been minimized.

Show comment Hide comment
@willicab

willicab 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

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

This comment has been minimized.

Show comment Hide comment
@if1live

if1live 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.

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

This comment has been minimized.

Show comment Hide comment
@hikari-no-yume

hikari-no-yume Sep 27, 2017

NOW I CAN POST 280-CHARACTER TWEETS IN JAPANESE

JACK KNOWS NOT WHAT POWER HE HAS HANDED ME

MUAHAHAHAHA

NOW I CAN POST 280-CHARACTER TWEETS IN JAPANESE

JACK KNOWS NOT WHAT POWER HE HAS HANDED ME

MUAHAHAHAHA

@hinaloe

This comment has been minimized.

Show comment Hide comment
@hinaloe

hinaloe 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

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

This comment has been minimized.

Show comment Hide comment
@Shugabuga

Shugabuga 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!

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!

@9DHOM5

This comment has been minimized.

Show comment Hide comment
@9DHOM5

9DHOM5 Sep 27, 2017

هلااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا

9DHOM5 commented Sep 27, 2017

هلااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا

@erydactyl

This comment has been minimized.

Show comment Hide comment
@erydactyl

erydactyl Sep 27, 2017

@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

@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

This comment has been minimized.

Show comment Hide comment
@Raw3a2011

Raw3a2011 Sep 27, 2017

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

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

@LongHairedHacker

This comment has been minimized.

Show comment Hide comment
@LongHairedHacker

LongHairedHacker Sep 27, 2017

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.

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

This comment has been minimized.

Show comment Hide comment
@joridiculous

joridiculous Sep 27, 2017

Cant get either of these to work :(

Cant get either of these to work :(

@BZHDeveloper

This comment has been minimized.

Show comment Hide comment
@BZHDeveloper

BZHDeveloper Sep 27, 2017

doesn't work anymore :/

doesn't work anymore :/

@craftsmashbuild

This comment has been minimized.

Show comment Hide comment
@craftsmashbuild

craftsmashbuild Sep 27, 2017

Broken

Broken

@Prof9

This comment has been minimized.

Show comment Hide comment
@Prof9

Prof9 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:

Owner

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

This comment has been minimized.

Show comment Hide comment
@Nodws

Nodws Sep 27, 2017

Damn snitches

Nodws commented Sep 27, 2017

Damn snitches

@PatCantSeeSharp

This comment has been minimized.

Show comment Hide comment
@PatCantSeeSharp

PatCantSeeSharp Sep 28, 2017

Are there any hacks for Tweetbot?

Are there any hacks for Tweetbot?

@pupi1332

This comment has been minimized.

Show comment Hide comment
@pupi1332

pupi1332 Sep 28, 2017

// ==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

// ==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

@bloggingcurb

This comment has been minimized.

Show comment Hide comment
@bloggingcurb

bloggingcurb Sep 28, 2017

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

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

@SnowyWorld2

This comment has been minimized.

Show comment Hide comment
@SnowyWorld2

SnowyWorld2 Sep 30, 2017

off

off

@barripdmx

This comment has been minimized.

Show comment Hide comment
@barripdmx

barripdmx Sep 30, 2017

Not work

Not work

@techahax

This comment has been minimized.

Show comment Hide comment
@techahax

techahax Oct 1, 2017

wait, so is this working

techahax commented Oct 1, 2017

wait, so is this working

@CollinChaffin

This comment has been minimized.

Show comment Hide comment
@CollinChaffin

CollinChaffin Oct 1, 2017

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

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

This comment has been minimized.

Show comment Hide comment
@kozjegyzo

kozjegyzo Oct 2, 2017

@CollinChaffin Thanks Man, this works like a charm!

@CollinChaffin Thanks Man, this works like a charm!

@HuproZ

This comment has been minimized.

Show comment Hide comment
@HuproZ

HuproZ Oct 4, 2017

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

HuproZ commented Oct 4, 2017

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

@NDBellisario

This comment has been minimized.

Show comment Hide comment
@NDBellisario

NDBellisario Oct 4, 2017

@CollinChaffin Thank you, You sir are awesome! 👍

@CollinChaffin Thank you, You sir are awesome! 👍

@CptSpaceToaster

This comment has been minimized.

Show comment Hide comment
@CptSpaceToaster

CptSpaceToaster Oct 9, 2017

Looks like the party's over

Looks like the party's over

@patrickcoombe

This comment has been minimized.

Show comment Hide comment
@patrickcoombe

patrickcoombe Oct 13, 2017

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

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

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