diff --git a/src/ephy-find-toolbar.c b/src/ephy-find-toolbar.c
index 7a089d2..da4d5bd 100644
--- a/src/ephy-find-toolbar.c
+++ b/src/ephy-find-toolbar.c
@@ -29,6 +29,7 @@
 #include <gdk/gdkkeysyms.h>
 #include <glib/gi18n.h>
 #include <gtk/gtkarrow.h>
+#include <gtk/gtkcheckbutton.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtkimage.h>
 #include <gtk/gtkentry.h>
@@ -51,6 +52,7 @@ struct _EphyFindToolbarPrivate
 	GtkWidget *label;
 	GtkToolItem *next;
 	GtkToolItem *prev;
+	GtkWidget *case_sensitive;
 	GtkToolItem *sep;
 	GtkToolItem *status_item;
 	GtkWidget *status_label;
@@ -222,18 +224,11 @@ entry_changed_cb (GtkEntry *entry,
 {
 	EphyFindToolbarPrivate *priv = toolbar->priv;
 	const char *text;
-	char *lowercase;
 	EphyEmbedFindResult result;
 	gboolean case_sensitive;
 
 	text = gtk_entry_get_text (GTK_ENTRY (priv->entry));
-
-	/* Search case-sensitively iff the string includes 
-	 * non-lowercase character.
-	 */
-	lowercase = g_utf8_strdown (text, -1);
-	case_sensitive = g_utf8_collate (text, lowercase) != 0;
-	g_free (lowercase);
+	case_sensitive = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->case_sensitive));
 
 	ephy_embed_find_set_properties (get_find (toolbar), text, case_sensitive);
 	result = ephy_embed_find_find (get_find (toolbar), text, priv->links_only);
@@ -316,6 +311,20 @@ entry_activate_cb (GtkWidget *entry,
 }
 
 static void
+case_sensitive_toggled_cb (GtkWidget *check,
+			   EphyFindToolbar *toolbar)
+{
+	EphyFindToolbarPrivate *priv = toolbar->priv;
+	const char *text;
+	gboolean case_sensitive;
+
+	text = gtk_entry_get_text (GTK_ENTRY (priv->entry));
+	case_sensitive = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->case_sensitive));
+
+	ephy_embed_find_set_properties (get_find (toolbar), text, case_sensitive);
+}
+
+static void
 set_focus_cb (EphyWindow *window,
 	      GtkWidget *widget,
 	      EphyFindToolbar *toolbar)
@@ -376,6 +385,7 @@ ephy_find_toolbar_init (EphyFindToolbar *toolbar)
 	GtkToolbar *gtoolbar;
 	GtkToolItem *item;
 	GtkWidget *alignment, *arrow, *box;
+	GtkWidget *checkbox;
 
 	priv = toolbar->priv = EPHY_FIND_TOOLBAR_GET_PRIVATE (toolbar);
 	gtoolbar = GTK_TOOLBAR (toolbar);
@@ -423,6 +433,14 @@ ephy_find_toolbar_init (EphyFindToolbar *toolbar)
 	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), priv->next, -1);
 	gtk_widget_show_all (GTK_WIDGET (priv->next));
 
+	/* Case sensitivity */
+	checkbox = gtk_check_button_new_with_mnemonic (_("Case sensitive"));
+	priv->case_sensitive = checkbox;
+	item = gtk_tool_item_new ();
+	gtk_container_add (GTK_CONTAINER (item), checkbox);
+	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
+	gtk_widget_show_all (GTK_WIDGET (item));
+
 	priv->sep = gtk_separator_tool_item_new ();
 	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), priv->sep, -1);
 	
@@ -446,6 +464,8 @@ ephy_find_toolbar_init (EphyFindToolbar *toolbar)
 				  G_CALLBACK (find_next_cb), toolbar);
 	g_signal_connect_swapped (priv->prev, "clicked",
 				  G_CALLBACK (find_prev_cb), toolbar);
+	g_signal_connect (priv->case_sensitive, "toggled",
+			  G_CALLBACK (case_sensitive_toggled_cb), toolbar);
 }
 
 static void
