Go package for syntax highlighting of code
Go HTML JavaScript Python Makefile C Ruby
Latest commit c95ac47 Oct 17, 2016 @sqs sqs committed on GitHub Merge pull request #19 from luisantonioig/master
Update README.md
Failed to load latest commit information.
cmd/syntaxhighlight add syntaxhighlight cmd Jun 2, 2014
testdata Fix tests and example. Dec 10, 2014
.travis.yml Travis: Skip testdata folder. Apr 18, 2015
LICENSE Initial commit Jan 27, 2014
Makefile add benchmark May 11, 2014
benchmark.txt Use Go stdlib text/scanner package instead of custom byte scanner May 30, 2014
example_test.go Fix tests and example. Dec 10, 2014
highlight.go Merge pull request #18 from sourcegraph/nodb-compare-expand May 12, 2015
highlight_test.go Removed NilAnnotator and amended data structures to match new API. May 12, 2015
keywords.go Run gofmt -s which simplifies struct defns Feb 26, 2015
kind_gostring.go Implement GoStringer interface for Kind type. Jan 17, 2015



Package syntaxhighlight provides syntax highlighting for code. It currently uses a language-independent lexer and performs decently on JavaScript, Java, Ruby, Python, Go, and C.

The main AsHTML(src []byte) ([]byte, error) function outputs HTML that uses the same CSS classes as google-code-prettify, so any stylesheets for that should also work with this package.

Documentation on Sourcegraph

Build Status status


go get -u github.com/sourcegraph/syntaxhighlight

First you should install the golang evironment, you can download it here or you can follow the getting started

Remember you should set the environment variables correctly (GOPATH and PATH)

Example usage

The function AsHTML(src []byte) ([]byte, error) returns an HTML-highlighted version of src. The input source code can be in any language; the lexer is language independent.

package syntaxhighlight_test

import (


func Example() {
    src := []byte(`
/* hello, world! */
var a = 3;

// b is a cool function
function b() {
  return 7;

    highlighted, err := syntaxhighlight.AsHTML(src)
    if err != nil {


    // Output:
    // <span class="com">/* hello, world! */</span>
    // <span class="kwd">var</span> <span class="pln">a</span> <span class="pun">=</span> <span class="dec">3</span><span class="pun">;</span>
    // <span class="com">// b is a cool function</span>
    // <span class="kwd">function</span> <span class="pln">b</span><span class="pun">(</span><span class="pun">)</span> <span class="pun">{</span>
    //   <span class="kwd">return</span> <span class="dec">7</span><span class="pun">;</span>
    // <span class="pun">}</span>


Contributions are welcome! Submit a pull request on GitHub.