diff --git a/cmd/cashier/main.go b/cmd/cashier/main.go
index 2b2436481a08967a6d61f15be1bb32e18ec367ce..acbaed7fccb46e4a53174d60a9c55bc4b64a890a 100644
--- a/cmd/cashier/main.go
+++ b/cmd/cashier/main.go
@@ -2,12 +2,14 @@ package main
 
 import (
 	"bufio"
+	"bytes"
 	"fmt"
 	"log"
 	"net"
 	"os"
 	"os/user"
 	"path"
+	"strings"
 	"time"
 
 	"github.com/nsheridan/cashier/client"
@@ -49,12 +51,16 @@ func main() {
 	}
 
 	fmt.Print("Enter token: ")
-	var token string
-	fmt.Scanln(&token)
+	scanner := bufio.NewScanner(os.Stdin)
+	var buffer bytes.Buffer
+	for scanner.Scan(); strings.HasSuffix(scanner.Text(), "+++"); scanner.Scan() {
+		buffer.WriteString(scanner.Text()[:len(scanner.Text())-4])
+	}
+	buffer.WriteString(scanner.Text())
+	token := buffer.String()
 
 	var message string
 	fmt.Print("Enter message: ")
-	scanner := bufio.NewScanner(os.Stdin)
 	if scanner.Scan() {
 		message = scanner.Text()
 	}
diff --git a/server/web.go b/server/web.go
index 08162d510b9581b95fac8db42d96ff62a8a14d9a..a67d5f3e42dc7a3047fd2dfba144afa1bc58ec40 100644
--- a/server/web.go
+++ b/server/web.go
@@ -1,6 +1,7 @@
 package server
 
 import (
+	"bytes"
 	"crypto/rand"
 	"encoding/hex"
 	"encoding/json"
@@ -181,6 +182,29 @@ func callbackHandler(a *appContext, w http.ResponseWriter, r *http.Request) (int
 	return http.StatusFound, nil
 }
 
+func chunkString(s string, chunkSize int) string {
+	if len(s) <= chunkSize {
+		return s
+	}
+
+	var buffer bytes.Buffer
+	runes := []rune(s)
+
+	for i := 0; i < len(runes); i += chunkSize {
+		end := i + chunkSize
+		if end > len(runes) {
+			end = len(runes)
+		}
+		buffer.WriteString(string(runes[i:end]))
+		buffer.WriteString("+++\n")
+	}
+	chunks := buffer.String()
+	if len(chunks) > 0 {
+		chunks = chunks[:len(chunks)-4]
+	}
+	return chunks
+}
+
 // rootHandler starts the auth process. If the client is authenticated it renders the token to the user.
 func rootHandler(a *appContext, w http.ResponseWriter, r *http.Request) (int, error) {
 	if !a.isLoggedIn(w, r) {
@@ -190,6 +214,7 @@ func rootHandler(a *appContext, w http.ResponseWriter, r *http.Request) (int, er
 	page := struct {
 		Token string
 	}{tok.AccessToken}
+	page.Token = chunkString(page.Token, 250)
 
 	tmpl := template.Must(template.New("token.html").Parse(templates.Token))
 	tmpl.Execute(w, page)