The other day I was working on a small project of mine, and it doesn’t use a content management system such as WordPress or Joomla. It’s just all html and css to style the pages. So I wanted to display my last tweet from twitter, and jazz it up using css. Now when people usually want to display their last tweet, and are running wordpress, they usually just install a plugin to do it for them.
Now remember my site is only HTML and CSS. So I looked into the Twitter API, and found a way you can display your last tweet using the twitterCallback javascript function. I have summed it up in a few easy to follow steps. And its hardly any code at all! (icon by dryicons)
First, decide where about on your page you want your last tweet to display. Then paste in this line of HTML.
[html]<div id=”twitter_update_list”>
</div>[/html]
Next you need to put these 2 lines of JavaScript below the code in step 1. On the 2nd line of code where it says 12345.json, you need to replace 12345 with your twitter username. So mine would be webdesigndev.json.
[js]<script type=”text/javascript” src=”http://twitter.com/javascripts/blogger.js”>
</script>
<script type=”text/javascript” src=”http://twitter.com/statuses/user_timeline/12345.json?callback=twitterCallback2&count=1″>
</script>[/js]
Now you will have a plain text version of your last tweet being displayed. So simple! Continue reading below to find out how to style your little twitter widget using CSS, and even customize it by playing around with some of the Twitter API Parameters.
Of course all webdesigners should perform some sort of styling to their last tweet, to jazz it up a little. At the moment your last tweet is displayed as a bullet list. To remove this and make it pure plain text, put this in your CSS Stylesheet.
[css]#twitter_update_list li {
list-style-type: none;
}[/css]
Then, you can change the colour of the main tweet text. If I wanted to make the text orange and then background black, i would put…
[css]#twitter_update_list span {
color: #FFCC00;
background: #000000;
}[/css]
Then you can style the links within your last tweet, and style when happens when you hover over them. An example would be the following.
[css]#twitter_update_list span a {
display: inline;
color: #000000;
}
#twitter_update_list span a:hover {
text-decoration: underline;
color: #666666;
}[/css]
I have styled mine using CSS, and come out with something that looks like this…

You can play around with the CSS, and what you want your widget to look like.
Twitters API is very big. You can play around with many of the different settings for the twitterCallback function. You can view the api documentation over at this link.
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-user_timeline
Enjoy!
Today, I am giving away Web Design Riches, the ultimate guide on how to run a profitable web design business. Enter your name and email below to get instant access.
MateToth (4 years ago)
This is what i was looking for.
Thanks a lot, it was a really useful post.
An other useful elemnt of the code is “count=x”
Write the number of the tweets you want to display.
Carter Cole (3 years ago)
i made some javascript code so you can embed other peoples tweets when they are cool or important for news stories directly into posts and websites
elvi (4 years ago)
i tried doing what you posted there but it gives me a list of clickables that says something like “about 11 hours ago” and so on.
it doesn’t even show me my latest tweet.
Andy (4 years ago)
Hmm, have you tried styling it via css? It might be hiding the last tweet.
Have you got a link you can post to show me?
Nick (4 years ago)
Hi, I was wondering how you can make it show the date and time… I haven’t really tried it yet but I’m in the process of setting up.
Andy (3 years ago)
Have you styled it with any css at all?
Jeff (3 years ago)
Do have any ideas how to replace in-tweet links with an image such as an arrow and hide the actual link?
Andy (3 years ago)
You could try something like this…
#twitter_update_list span a {
display: inline;
font-size: 0px;
width: 16px;
height: 16px;
background: url(/images/arrow.png) no-repeat;
}
#twitter_update_list span a:hover {
text-decoration: none;
}
This would hopefully display a 16 x 16 pixel image instead of links.
Dude (3 years ago)
Hi! Cool post, but I´m kind of confused… I don´t see the “12345.json” in the second line of the code, what do you mean by replacing that? Cheers!
Andy (3 years ago)
Hey, Its in the 3rd line of code…
src=”http://twitter.com/statuses/user_timeline/12345.json?
And you replase 12345 with your twitter username.
Niki (3 years ago)
i have tried this but for nothing is displaying
Niki (3 years ago)
now it shows the tweets but not the latest it shows all the tweet
Andy (3 years ago)
Put this…
&count=1
At the end of your query. Like…
username.json?callback=twitterCallback2&count=1
Nick (3 years ago)
I like the simplicity of the snippet they provide, but I’ve noticed that probably 85% of the time, nothing actually gets loaded. I’m not sure if it’s hitting an API call limit (only up to 100/hr) but that seems unlikely since I’m just testing it in a dev environment (I don’t get that much traffic anyway hehe).
I’ve since used a jQuery based plugin that does a scrape using search.twitter.com. Maybe not ideal, but at least it works.
Anyone else have the same issues with the Twitter provided snippet?
terry (3 years ago)
I get asked for a username password when i test it. Anybody else have this problem?
aShocka (3 years ago)
read the twitter’s instructions – it says you have to have a public profile. when you unlock it in your settings, it will show.
sriganesh (3 years ago)
ahh. thank you, i will try it. thank you, I WAS LOOKING FOR THIS, TO ADD CUSTOM TWITTER UPDATES.
Jacob (3 years ago)
This works great for me. Only problem I have is it’s displaying all my tweets from my twitter account. How do I only display a set amount? is it the count?
Andy (3 years ago)
Put this…
&count=1
At the end of your query. Like…
username.json?callback=twitterCallback2&count=1
Jacob (3 years ago)
Yep, tried that.
.json?callback=twitterCallback2&count=1
When you take out the ; before the count it no longer displays anything.
Catalin (3 years ago)
Hey thank you for this but a question: how can I minimize the number of tweets because I used count=1 and I get last 20 tweets?
Catalin (3 years ago)
Had to remove the “;” from your initial code line: twitterCallback2&;count=1\
Working fine now
dinsky (3 years ago)
Thanks for providing this, but I can’t get it to display anything at all.
Here’s a link the the page I’m trying to get it to work on. It’s at the bottom of the page in the footer: http://www.viddyworks.ca/v2/index.html
Andy (3 years ago)
Have you put your username in the line of code?
john (3 years ago)
Yo have the code “twitterCallback2&count=1″ on your page.
Should be “twitterCallback2&count=1″
Myfacefriends (3 years ago)
nice tutorial thanks
kees (3 years ago)
Awesome tutorial!,,,,,i have my user name in the script and i have the whole css but it doesn’t work…..i have tried it on a div and on a image but i doesn’t work..? any idea?….something wrong with the API?
Thanks in advance
Kwamepocho (3 years ago)
Worked ok for me…I was having problems until I clicked to view source code icon and recopied the javascript links. Didnt have any issues again…
kees (3 years ago)
It works now!
ote tatsuya (3 years ago)
great tutorial…I’m a newbie on CSS..How can I put a picture like you have done..beside the status’s text..thank you
Sean (3 years ago)
I’ve tried this but it doesn’t seem to be showing any tweets. help?
Keiron Lowe (3 years ago)
Hi, How would I get it to show the users avatar?
And have a space between each tweeet?
Sue (3 years ago)
Fantastic just what I needed worked first time (doing a redesign of my site at the moment so it’s not live yet)
I tried to get the arrow to show it didn’t work so not sure what to try instead of your suggestion above
any other ideas?
css code reads…………
#twitter_update_list li {
list-style-type: none;
}
#twitter_update_list span {
color: #34545c;
font-size: 13px;
font-weight: normal;
}
#twitter_update_list span a {
display: inline;
font-size: 0px;
width: 16px;
height: 16px;
background: url(/images/bn-rr.gif) no-repeat;
}
#twitter_update_list span a:hover {
text-decoration: none;
}
other than that you have explained it very well thank you
koen (3 years ago)
hej,
is there a way.. so the script doesn’t reload the page content??
it messes up the other javascript on my site.
Sean (3 years ago)
Koen, I guess the problem resides in javascript libraries, It’s because which in most cases they are conflicting because most of of the javascript libraries uses $ as an object…
–
Thanks for the sweet share, I’ve been looking for it for AGES!
SwEtS (3 years ago)
hey it really helped me a lot..it works dude..!!!!!!!!!
Torque (3 years ago)
For some reason, when I place the code, the page crashes on IE. I think Internet Explorer has a problem with APIs. Is there a work around so that it doesn’t crash?
Alex (3 years ago)
Though its good being able to get the twitter info being able to specify which parts to get/wrap them in spans ect would be good. Though that might be going into the AIP quite a bit more…
Good article though
Creative Ideas (3 years ago)
Nice. Very useful info
Quixotic Media (3 years ago)
Hey, great tutorial. One thing I am having a problem with is setting the hyperlinks a certain color, It seems something I have put in my code is not allowing this. Any ideas? I am designing this for a client on http://one3rdnerd.com see the bottom left of the footer.
dave (3 years ago)
HI, How do i remove the date stamp from the tweet?
BrockWalker (3 years ago)
I found, that if your username has an underscore in it, you need to change “&count=1″ to “&count=2″ Works for me
Sanjay (3 years ago)
everything works fine but each and everytime it is loading it asks for username and password what to do
Tom (3 years ago)
Doesn’t work for me. Nothing comes in. I have set my username, but still nothing
Tom (3 years ago)
when I look at the json call, I see that I’m getting a rate limit error
joe (3 years ago)
thanks for the post,
its working for me fine, however… the “45 mins ago” doesnt get restyled when i apply css to the links but names in the twitter do?? any reason for this? I have changed the page defaults for links to over come that and match them to my desired styling but would prefer to keep things tidy and all in css for the widget itself. any ideas?
also when i am displaying 3 counts there is no padding between posts for they are really tight on top of each other… i have tried to add padding-bottom to a variety of things but all of what i try doesn’t seem to effect the end display??? any clues?
Also, with rate limits and javascript issues… is this a reliable method? have people that are using this method live on their sites had any problems ?
thanks
Greg6 (3 years ago)
This works great, thanks!
A question: I’ve noticed that when the call doesn’t return anything b/c Twitter’s servers are overloaded (happens often!), then it prevents any remaining HTML of loading.. Is there a way to force it to load the rest of the page even if Twitter servers don’t respond?
That would be really useful.
BornA (3 years ago)
hi
Great article man
We can’t access to twitter in our country
can I access my tweets from other api or url and then import it to my self-hosted wordpress blog?!
Neil (3 years ago)
Can’t get it to work in any version of IE. Works great in Firefox though. Anyone else had the same problem?
Is there a fix? Thanks
Wordpress: come mostrare gli ultimi status di Twitter | Gioxx's Wall (3 years ago)
[...] Basato sull’originale di webdesigndev. [...]
tim (3 years ago)
great tutorial,
i dont have enough space to display the entire tweet, is it possible to only display for example 100 characters with … at the end?
thanks in advance
Tim
Globinch (3 years ago)
Write your own Twitter widget in (Recent Tweets) 3 steps using twitter API.
http://www.globinch.com/2010/04/07/write-your-own-twitter-widget-in-3-steps-recent-tweets-using-twitter-api/
Programmer (3 years ago)
Hi,
I can’t get it to work in IE but it works great in Firefox though??
I notice that it sometimes displays in IE, but most of the time it doesn’t.!
Is these problems related to API and hitting call limit?
Is there a fix? Thanks
Patrick (3 years ago)
Hi, awesome code and great tutorial. Only took about 5 minutes and works really well in Chrome.
Here is mine: http://www.patricktayloredwards.com. Its relatively simple at the moment but I will work on it.
Joe:
padding between individual tweets: (put this in the css)
#twitter_update_list li {
padding-bottom: 10px;
}
I’m also trying to work out how to put a to have the timestamp on a new line and in a smaller text.
Cheers
Ivanet (3 years ago)
Really cool, I have inserted in my blog and it works fantastically. Also you can style the list mode directly from the DIV without editing your CSS
Edin (3 years ago)
Is it possible to remove date stamp? and how?
Cheers
Patrick (3 years ago)
It is technically possible to remove the date / time stamp.
Twitter reads the time stamp as a link so you could put this in your css:
#twitter_update_list li a {
display: none;
}
this simply hides the links from the list withing the div named twitter_update_list
Though this does work, it will also hide any links or ‘@something’ that are in your tweets.
So it is not ideal, but if we knew the exact name twitter gives to the timestamp then it should be possible. I think it is ‘entry-date’ but I have not got anything to work yet.
Cheers
shikkaba (2 years ago)
My server was being stupid and not letting me use PHP to call Twitter. The Twitter official ap wasn’t customizable, really. So this helped a lot. Seriously, thank you.
Sean (2 years ago)
THANK YOU! Finally – I have been looking far and wide for this and this is the first one that works!
mattn (2 years ago)
Awesome example – but how did you get rid of your date stamp eg”1 day ago”?
Jonathan (2 years ago)
I made a jquery plugin to work with Twitter. Check it out at http://github.com/jcutrell/jquery.getTweet.js – free of course, and offers a few extra options.
Adam (2 years ago)
When I paste the code in DreamWeaver throws the following error:
“The documents current encoding can not correctly save all of the characters within the document. You way want to change to UTF-8 or encoding the supports the special characters in this document.”
Can anyone help me out?
Jon (2 years ago)
Adam – the problem is probably that copy/paste is introducing funky quotation marks that DreamWeaver doesn’t like. Try typing the code directly into DreamWeaver rather than copy/pasting it.
Ronald (2 years ago)
love this script but i got a problem, when twitter is over capacity then my page stucks and dont load the rest of the page… can i implement something like maximal execution time?
Mathias Vagni (2 years ago)
It works great when I use my twitter profile (@disengised) but it somehow stops working when I use my clients twitter (@soasdebate). Any Ideas?
Mathias Vagni (2 years ago)
Ok, I found it out. You have to set the timezone it otherwise doesnt work…
Thanks.
Gergely (2 years ago)
Thank you for the article, it is very useful. I am going to implement on my site.
I have one tiny observation: I learnt that using hyphens (-) instead of underscores (_) in the class names is better practice. Apparently Google likes this standard.
Cheers
Lee (2 years ago)
This doesn’t work. I tried it with different usernames, put it on a page by itself tried it on a local server and a remote server, tried it with the javascript in the header and in the body. Nothing. Does anybody else have a problem with this code?
Jeff (2 years ago)
Ronald,
The problem with your page not displaying when twitter is over capacity is due to the placement of the js in step 2. You definitely do not want to add it after the code in step 1… else your page load will always depend on twitter. You want to put it at the end of your markup, right before the closing body tag in your page.
Thanks.
Jeff (2 years ago)
And Lee.. it’s dependent on the twitter API. Just like facebooks, flickrs and everyone elses.. if it’s down your code won’t show. Mine goes down from time to time as well, so you were likely testing in that window.
Jeff (2 years ago)
And Lee.. the code didn’t work for me either. I had to add a twitter_div before the twitter_update_list, which had to be surrounded in ul tags. Twitter’s likely changed something since this was originally posted.. since it’s well over a year and a half old. You can hit me up on my site if you need my exact code.
Thanks.
Filipe (2 years ago)
I don’t want to display the time the tweet was made how can I do that and if I wanted to keep it how can I style it with css does it have a class or id
thanks
Justin (2 years ago)
I am having trouble. The links to do not change color to match my site. I don’t know what I’m doing wrong; I’m doing everything this site says to do but it’s not working. The links are the standard blue colored if unclicked and the standard purple for clicked links.
Can anyone help me with this problem? Like I said, I’m doing everything this tutorial says to do and it’s not working. Thanks.
Mikebmuller (2 years ago)
Thanks so much. I usually use wordpress plugins for this. I was so happy I found this so quickly. Thank you very much.
P.S. any idea how to customize a link after the tweet. ie “Follow Me” instead of “2 days ago”
Alan Hart (2 years ago)
I use juitter (www.juitter.com) with a time/date mod ( http://www.alanhart.co.uk/archives/2010/06/09/change-juitter-time-and-date-format/ )
mani (2 years ago)
I like this
nico (2 years ago)
i make some mistakes?
i see all my tweet not the last!
PJM (1 year ago)
Yeah me too?And is there a way to do this for Facebook?
Damir (2 years ago)
Exactly what I was looking for!
Easy, simple… thank you!
Damir (2 years ago)
I’m trying now to add scroll to this, with arrows left/right so visitors can view older tweets if they want, and still keep it simple. That would be nice.
Paolo (2 years ago)
Great tuts Iggy! Many Thanks.
One thing, how can I get rid of the timeline “19 minutes ago”?
Brandon (2 years ago)
Finally, I’m tired of all these idiots making huge scripts and complex systems to just display a Tweet, you did it in 3 lines of code.
Brandon (2 years ago)
Also, for anyone who’s wondering why this is no longer working, you must use this HTML code now:
And if you want to remove the “– hours ago…” text, just add this to your stylesheet:
#twitter_div ul a {
display: none;
}
Brent (2 years ago)
Can you paste the HTML again? It looks like it was stripped from the comment. Try including in tags? Or escaped?
Brent (2 years ago)
And my comment was supposed to say ‘pre’ tags, but the tag was also stripped.
Daniel (2 years ago)
I can confirm this works
And like a charm..
One question:
.json?callback=twitterCallback2&count=1 <–This number, is it not the count of tweets one want?
All my tweets are loaded..(693) days ago.
Only need like 2-3 tweets
Thanks.
Jiten (2 years ago)
Hi there ! thanks a lot for this tutorial, however I’d like to know how to display my tweets along with its date (and time if possible)… how do I do it ?
Bhanu (2 years ago)
It was really helpful. Thanks for sharing.
Alex (2 years ago)
You say to paste Step 2 below Step 1. After the HTML? It doesn’t work for me if I post Step 2 within the div.
Allen (2 years ago)
Anyone that CANT get the above code to work. I had the same issue..
You must type it out not copy and paste!
PJM (1 year ago)
Reason is the quotation marks i.e “something”.Here they are slanted so if you copy/paste,your browser cant interpret that.If you are using notepad++ just find/replace the slanted ” with the normal “.
Eddie (2 years ago)
to remove the “# days ago” thing…
add
[css]#twitter_update_list a {
display:none;
}
}[/css]
notice the lack of “span”
Gitesh (2 years ago)
As of 7th July 2011 this no longer seems to work, the JSON string returned is:
twitterCallback2([]);
Can anyone else confirm?
FCL (2 years ago)
Tweets & Hashtags…
Is there any possibility to show just tweets from a specific #hashtag?
Thanks for help.
Cheers
hamlet (1 year ago)
Codes work fine, but it wont work if viewed in blackberry browser.
Any idea, so I can put codes in my mobile version website for blackberry users?
TFisker (1 year ago)
I have changed the “….twitterCallback2&count=1″ to 5, to get the five latest tweets. This works very well, but how do I get an empty line (linebreak I guess) between each tweet?
Right now all five tweets are shown in a “solid” chunk.
@TFisker
Jonas (1 year ago)
I am having problems with retweets. Whenever i try to retweet on twitter it does not display at al on my webpage with this function. Any ideas?
Jason (1 year ago)
I am having the same problem as the previous post. Whenever I retweet something, the number of tweets that I have set to display it displays 1 less if you get me.
For example if I set the number to 3 and if I retweet something then it will only display 2 tweets. If I reweet 2 things it will only display 1 tweet on my website.
Any ideas??
PJM (1 year ago)
read about include_rts.Its explained in here https://dev.twitter.com/docs/api/1/get/statuses/user_timeline
Richard (1 year ago)
Do you have any suggestions, your CSS code isn’t working on my site… any help would be great!
Richard
Ben (1 year ago)
Not working in IE
PJM (1 year ago)
I see all my tweets,but I just need my last one.Is there a way to do that?
And is there a method to do this same thing with facebook,I’ve googled but there doesnt seem to be anything straight up.
Alfredo Cavalcanti Segundo (1 year ago)
Since 2009 the tweeter api changed.
So, here is an update:
insted of: http://twitter.com/statuses/user_timeline/12345.json?callback=twitterCallback2&count=1
use this url: https://api.twitter.com/1/statuses/user_timeline.json?callback=twitterCallback2&screen_name=12345&count=1
replace 12345 with the screen name (webdesigndev for this tutorial) and count is the number of twitts to display.
Jonas (1 year ago)
Thanks Alfredo!
Just what I needed!
Dave (1 year ago)
thanks for this tutorial which was very helpful.
I don’t mind having @ replies displayed but for some reason my page inserts a line break between the @ and the username at http://www.voiceofharold.co.uk. how can I stop this? it’s annoying.
vithul (1 year ago)
SIr, i want to add a comment box like your’s. can you post a tutorial for that?
Dylan (1 year ago)
Hi, I did excactly what you typed. But nothing seems to show up at my website. Even the plain text won’t show up.
What am I doing wrong? Or is the code old? Already tried the code from Alfredo..
mike thornley (1 year ago)
I only want my most recent tweet displayed and when I change the count to 1, nothing renders. If I have 2, it works fine. Why is this?.
Devender (1 year ago)
is it possible to embed multiple users tweets on same page? Its working only for one twitter user which are on same page. May be it is DIV ID.
Cheers
koffertje (1 year ago)
If you want the link at the end of the line “1 day ago”
you can set the “display: inherit; and delete the word span like below.
#twitter_update_list a {
display: inherit;
color: #000000;
}
Arnold (1 year ago)
I set this the first time yesterday and it worked fine. Today it is not working in all of a sudden. Any idea?
MattiWell (1 year ago)
Hello guys !!!
I read all your post and nobody have my problem. Here is mine. When I added the code the software telling me that “blogger.js” and “12345.json” are remote and cannot be edited. My question is, do you know what’s going on and who can I fix it ?? Thanks for your time and thank you for the post. it’s really helpful.
Kate (1 year ago)
Works great for me. This is just what I was looking for. Thanks!
praveen (1 year ago)
I am using this code and thing is showing
penile extender (1 year ago)
WOW just what I was searching for. Came here by searching for connect to twitter user timeline
Heather Cash (1 year ago)
Thank you! This is awesome!!
Live Cricket (1 year ago)
This is awesome. Wasted some thing like this for my site for long! Thanks a lot!
claie (1 year ago)
hey,
i cant get this to work at all
jon (1 year ago)
adam –
put that in your header.
Darren (1 year ago)
Is there any way to display the tweet in the “twitter_update_list” div, and then have the full name of the place (geographic location) associated with that tweet display in a different div? When I go to the url, the data is there for both the tweet and the place; I’d love to be able to display both separately. I can’t seem to find documentation to do this in the API docs.
neilcreagh (10 months ago)
Any idea how to call the SECOND most recent tweet – I have a layout to build where the latest two tweets are shown separately in absolute positions – so I can easily call the first/latest one but how would I call the second one separately? Any ideas would be greatly appreciated, thanks.
Neil
Daniel Wakefield (9 months ago)
Hey guys
Ive been reading through the comments and it seems to me that most the problems such as tweet count etc are probably being caused by copying and pasting.
Problem 1
If you copy the sample code you will need to replace quotation marks “” as they are not utf endoded on this site.
That should sort the twet count not working.
Problem 2
The list items are not wrapped in tags
Dont have a solution for this bit or a particular problem but its definatelly not right, im going to look into it now and post back later.
Hope this helps
D
oliver (8 months ago)
[js]
[/js]
hi, this is no longer working…wondering if you know the fix? Mostly a front end designer, trying to make sense of the twitter dev jargon
thanks!
Maggie (8 months ago)
Twitter updated their API to 1.1, so this no longer works. Better to use this instead https://dev.twitter.com/docs/embedded-timelines
Richard (7 months ago)
Hey Guys,
I’ve followed the code closely and for some reason I cannot get any of my feeds to appear.
my code is:
I was hoping if someone could shed some light on this for me. I’ve read through the other comments, but I still cant it to work
Cero2k (5 months ago)
any idea if this technique is still working, I had it in my site a while ago and it stopped working. I’ve been to other sites that i know use something like this or similar and they don’t seem to be working either.
Chris Were (3 months ago)
Doesn’t work. Too much out-of-date information on the internet.
djw (2 months ago)
this didn’t work for me at all, i implemented exactly as described and got this:
[js] [/js]