Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
G0Bin is a client side encrypted pastebin written in Go
JavaScript Go CSS
branch: master
Failed to load latest commit information.
pastes init
static Set the default key size to 256 bits
templates Rename project from g0bin to G0Bin
.gitignore init
LICENSE Initial commit Rename project from g0bin to G0Bin
config.json init
g0bin.go init


G0Bin is a client side encrypted pastebin. The server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.


G0Bin is a Go port of 0bin (written in Python). 0bin in turn is an implementation of the ZeroBin project (written in PHP).

This project was created mostly as a Go learning exercise through converting a project I use often. It also serves as a great sample project in Go since it only uses the standard library.

Here are some elements that are have been implemented.

NOTE: The demo was modified to run on Google App Engine using the Datastore API.

How it works

When pasting a text into G0Bin:

Encryption image

  • You paste your text in the browser and click the “Submit” button.
  • A random 256 bits key is generated in the browser.
  • Data is compressed and encrypted with AES using Javascript libraries.
  • Encrypted data is sent to the server and stored.
  • The browser displays the final URL with the key.
  • The key is never transmitted to the server, which therefore cannot decrypt data.

When opening a G0Bin URL:

Decryption image

  • The browser requests encrypted data from the server
  • The decryption key is in the anchor part of the URL (#…) which is never sent to the server.
  • Data is decrypted in the browser using the key and displayed.


Clone this repository, build it and run it.

git clone
cd g0bin
go build

To run G0Bin on a different port, modify the Port setting in config.json.

The configuration of G0Bin can also be reloaded by sending a HUP signal to the process.



This project modifies the Python implementation and cleans things up to make them more generic. It has the following changes:

  • Remove extra header links.
  • Remove extra link options.
  • Remove extra layout details.
  • Set Burn after reading as default option.

Here are some items which are in the Python implemention which have not been implemented.

  • Paste counter - Display a tiny counter for pastes created
  • Names/links to insert in the menu bar
  • Handling of Max Size
  • Paste ID length
  • Clone paste

Copyright (c) 2013 Julian Yap

MIT License

Something went wrong with that request. Please try again.