109

What Javascript libraries can you recommend for syntax highlighting <code> blocks in HTML?

(One suggestion per answer please).

1

13 Answers 13

103

StackOverflow uses the Prettify library.

Sign up to request clarification or add additional context in comments.

10 Comments

I second this. Google Code uses it for their own repo highlighting (since they wrote it) and automatically detects the language.
Surely using one which "automatically" detects the language simply puts more weight on the client's machine/browser...
You can give the language to Prettify if you know it, it will improve the performance. This is just not used in StackOverflow due to the large language audience.
Just added this to my web site, and it's great and so simple to use!
@Vincent: it improves more than just performance ;-)
|
44

I recently developed one called rainbow.

The main design goal was to make the core library really small and make it really easy for developers to extend.

See http://rainbowco.de.

2 Comments

I just ran across Rainbow today — it looks to me like it can discriminate more finely than Prettify (like for instance, being able to tell when rdf:type is used as an element and when it's an attribute).
This needs to go up to the top, Craig. I tried all of the other solutions and only Rainbow handled Python correctly and had readable theme stylesheets. Amazing plugin!
26

SyntaxHighlighter is available as a GitHub project.

Comments

16

What about Prism by Lea Verou.

From her blog post announcement in June (2012):

  • It’s tiny. The core is only 1.5KB minified & gzipped.
  • It’s incredibly extensible. Not only it’s easy to add new languages (that’s a given with every syntax highlighter these days), but also to extend existing ones.
  • It supports parallelism through Web Workers, for better performance in certain cases.
  • It doesn’t force you to use any Prism-specific markup, not even a Prism-specific class name, only standard markup you should be using anyway. So, you can just try it for a while, remove it if you don’t like it and leave no traces behind.

1 Comment

This ended up being the best option of all the answers for me because of the ease of adding new language definitions.
15

jQuery Syntax Highlighter is a new one based on Google's Prettify - a really really really popular plain javascript syntax highlighter.

It supports such things as code and pre blocks, able to use classnames like language-javascript to indicate we want it to highlight, as well as wordwrap. You can copy and paste code by selecting it normally instead of having to open a raw view like many others. It can be further customised by using the HTML5 data attribute data-sh or via specifying options at initialisation. A great stable choice which is updated regularly.

1 Comment

The author actually says it's based on Google's Prettify, not SyntaxHighlighter. Looks just like SyntaxHighlighter 3, though, but seems to require a lot less work to set up. Thanks for the link!
5

How about:

syntaxhighlighter

highlight.js

JSHighlighter

1 Comment

A simply Google search would also give me that list--but which one you prefer and why?
5

If you're using jQuery there's Chilli:

http://code.google.com/p/jquery-chili-js/

All you have to do is include the jquery-chili.js and recipes.js, and do the highlight with

$("code").chili();

It should figure out the language by itself.

1 Comment

The links to examples on that page all lead to an expired domain full of ads so it's a little bit difficult to get an idea of what this highlighter looks like.
5

I'm very happy with SHJS. It supports a bevy of languages and seems pretty fast and accurate.

Here's an example where I use it on my blog. I'm using my own custom CSS file that simulates Coda's syntax highlighting. Email me if you'd like to use it.

Comments

4

jQuery.Syntax is an extremely fast and lightweight syntax highlighter. It has dynamic loading of syntax source files and integrates cleanly using CSS or modelines.

It was developed specifically to fill a gap - that is: a fast, clean, client-side syntax parser.

4 Comments

unfortunately it thought a standard FpML message to be SPAM :)
@ehosca, are you able to give me some clarification on problem you are having?
when i paste the xml in dl.dropbox.com/u/42313/fpml.xml to syntax-highlighting.com/p/index it says Invalid content, appears to be spam. hope this helps.
You need to include some line breaks in the text, otherwise it looks like link spam. I can't remember the exact formulae I used, but I think if you have more than one URL per line the text is considered spam - this is because heaps of bots were spamming the system (syntax-highlighing.com).
3

If you are looking for syntax highlighting in an in-browser editor, try CodeMirror.

Comments

3

I'm not being argumentative but just thought it worth mentioning that if you're using a CMS or blog platform then using a backend highlighter is better for obvious reasons — Have a look at Geshi(http://qbnz.com/highlighter/) if you're interested. Actually you could set up your server to parse HTML content through a backend technology — so there is no need for the JS highlighters at all. (The only functionality they add is the ability to print/copy[using swf].)

4 Comments

It's not obvious to me. Why is using a backend highlighter better?
Yeah, I, too, would really love to know what is "obvious" about preferring to send a larger response to the client...
I prefer the syntax highlighting to still be present on devices that don't have JS enabled. Additionally, client-side highlighters have runtime costs that can be quite hefty if you've got lots of code to highlight. That said, it depends on your specific use-case :)
What devices don't have JS enabled?
2

SyntaxHighlighter

Comments

2

This article at the Web Resources Depot lists a bunch of options for highlighting code, some of which use Javascript. It was published on 4th May 2009.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.