diff --git a/Makefile b/Makefile
index 7973c25..a0027ee 100644
--- a/Makefile
+++ b/Makefile
@@ -153,6 +153,19 @@
 
 ##############################################################################
 
+SKHELLO_SRCS := skhello.cpp
+
+SKHELLO_SRCS := $(addprefix tools/, $(SKHELLO_SRCS))
+
+SKHELLO_OBJS := $(SKHELLO_SRCS:.cpp=.o)
+SKHELLO_OBJS := $(addprefix out/, $(SKHELLO_OBJS))
+
+skhello: $(SKHELLO_OBJS) out/libskia.a
+	@echo "linking shkello..."
+	$(HIDE)g++ $(SKHELLO_OBJS) out/libskia.a -o out/tools/skhello $(LINKER_OPTS)
+
+##############################################################################
+
 include gm/gm_files.mk
 GM_SRCS := $(addprefix gm/, $(SOURCE))
 
@@ -170,7 +183,7 @@
 ##############################################################################
 
 .PHONY: all
-all: $ bench gm skimage tests
+all: $ bench gm skimage tests skhello
 
 .PHONY: clean
 clean:
@@ -183,6 +196,7 @@
 	@echo "    bench: out/bench/bench"
 	@echo "    gm: out/gm/gm"
 	@echo "    skimage: out/tools/skimage"
+	@echo "    skhello: out/tools/skhello"
 	@echo "    tests: out/tests/tests"
 	@echo "    clean: removes entire out/ directory"
 	@echo "    help: this text"
diff --git a/tools/skhello.cpp b/tools/skhello.cpp
new file mode 100644
index 0000000..6f56d4c
--- /dev/null
+++ b/tools/skhello.cpp
@@ -0,0 +1,65 @@
+#include "SkCanvas.h"
+#include "SkGraphics.h"
+//#include "SkImageDecoder.h"
+#include "SkImageEncoder.h"
+//#include "SkStream.h"
+#include "SkString.h"
+#include "SkTemplates.h"
+
+static void show_help() {
+    SkDebugf("usage: skhello [-o out-dir] [-t 'hello']\n  default output: skhello.png\n");
+}
+
+int main (int argc, char * const argv[]) {
+    SkAutoGraphics ag;
+    SkString path("skhello.png");
+    SkString text("Hello");
+
+    for (int i = 1; i < argc; i++) {
+        if (!strcmp(argv[i], "--help")) {
+            show_help();
+            return 0;
+        }
+        if (!strcmp(argv[i], "-o")) {
+            if (i == argc-1) {
+                SkDebugf("ERROR: -o needs a following filename\n");
+                return -1;
+            }
+            path.set(argv[i+1]);
+            i += 1; // skip the out dir name
+        } else if (!strcmp(argv[i], "-t")) {
+            if (i == argc-1) {
+                SkDebugf("ERROR: -t needs a following string\n");
+                return -1;
+            }
+            text.set(argv[i+1]);
+            i += 1; // skip the text string
+        }
+    }
+
+    SkPaint paint;
+    paint.setAntiAlias(true);
+    paint.setTextSize(SkIntToScalar(30));
+    SkScalar width = paint.measureText(text.c_str(), text.size());
+    SkScalar spacing = paint.getFontSpacing();
+
+    int w = SkScalarRound(width) + 30;
+    int h = SkScalarRound(spacing) + 30;
+    SkBitmap bitmap;
+    bitmap.setConfig(SkBitmap::kARGB_8888_Config, w, h);
+    bitmap.allocPixels();
+
+    SkCanvas canvas(bitmap);
+    canvas.drawColor(SK_ColorWHITE);
+    
+    paint.setTextAlign(SkPaint::kCenter_Align);
+    canvas.drawText(text.c_str(), text.size(),
+                    SkIntToScalar(w)/2, SkIntToScalar(h)*2/3,
+                    paint);
+
+    SkImageEncoder::EncodeFile(path.c_str(), bitmap,
+                               SkImageEncoder::kPNG_Type, 100);
+
+    return 0;
+}
+
