diff --git a/lib/widgets/ephy-location-entry.c b/lib/widgets/ephy-location-entry.c
index 0282589..4c7c8b5 100644
--- a/lib/widgets/ephy-location-entry.c
+++ b/lib/widgets/ephy-location-entry.c
@@ -65,6 +65,8 @@ struct _EphyLocationEntryPrivate
 	GtkWidget *icon;
 	GtkWidget *lock_ebox;
 	GtkWidget *lock;
+	GtkWidget *bookmark_ebox;
+	GtkWidget *bookmark;
 	GdkPixbuf *favicon;
 	GdkColor secure_bg_colour;
 	GdkColor secure_fg_colour;
@@ -911,6 +913,16 @@ ephy_location_entry_construct_contents (EphyLocationEntry *entry)
 
 	ephy_icon_entry_pack_widget (priv->icon_entry, priv->icon_ebox, TRUE);
 
+	priv->bookmark_ebox = gtk_event_box_new ();
+	gtk_container_set_border_width (GTK_CONTAINER (priv->bookmark_ebox), 2);
+	gtk_event_box_set_visible_window (GTK_EVENT_BOX (priv->bookmark_ebox), FALSE);
+
+	priv->bookmark = gtk_image_new_from_stock (EPHY_STOCK_BOOKMARK,
+						   GTK_ICON_SIZE_MENU);
+	gtk_container_add (GTK_CONTAINER (priv->bookmark_ebox), priv->bookmark);
+
+	ephy_icon_entry_pack_widget (priv->icon_entry, priv->bookmark_ebox, FALSE);
+
 	priv->lock_ebox = gtk_event_box_new ();
 	gtk_container_set_border_width (GTK_CONTAINER (priv->lock_ebox), 2);
 	gtk_widget_add_events (priv->lock_ebox, GDK_BUTTON_PRESS_MASK);
@@ -1320,3 +1332,27 @@ ephy_location_entry_set_lock_tooltip (EphyLocationEntry *entry,
 
 	gtk_widget_set_tooltip_text (priv->lock_ebox, tooltip);
 }
+
+void
+ephy_location_entry_set_bookmark (EphyLocationEntry *entry,
+				  gboolean bookmark)
+{
+	return;
+}
+
+void
+ephy_location_entry_set_show_bookmark (EphyLocationEntry *entry,
+				   gboolean show_bookmark)
+{
+	EphyLocationEntryPrivate *priv = entry->priv;
+	g_object_set (priv->bookmark_ebox, "visible", show_bookmark, NULL);
+}
+
+void
+ephy_location_entry_set_bookmark_tooltip (EphyLocationEntry *entry,
+				      const char *tooltip)
+{
+	EphyLocationEntryPrivate *priv = entry->priv;
+
+	gtk_widget_set_tooltip_text (priv->bookmark_ebox, tooltip);
+}
diff --git a/lib/widgets/ephy-location-entry.h b/lib/widgets/ephy-location-entry.h
index 549416c..e557fba 100644
--- a/lib/widgets/ephy-location-entry.h
+++ b/lib/widgets/ephy-location-entry.h
@@ -103,6 +103,15 @@ void		ephy_location_entry_set_lock_stock	(EphyLocationEntry *entry,
 void		ephy_location_entry_set_lock_tooltip	(EphyLocationEntry *entry,
 							 const char *tooltip);
 
+void		ephy_location_entry_set_bookmark	(EphyLocationEntry *entry,
+							 gboolean bookmark);
+
+void		ephy_location_entry_set_show_bookmark	(EphyLocationEntry *entry,
+							 gboolean show_bookmark);
+
+void		ephy_location_entry_set_bookmark_tooltip (EphyLocationEntry *entry,
+							  const char *tooltip);
+
 G_END_DECLS
 
 #endif
diff --git a/src/ephy-location-action.c b/src/ephy-location-action.c
index 584a00e..3e3737e 100644
--- a/src/ephy-location-action.c
+++ b/src/ephy-location-action.c
@@ -48,9 +48,12 @@ struct _EphyLocationActionPrivate
 	GdkPixbuf *icon;
 	char *lock_stock_id;
 	char *lock_tooltip;
+	char *bookmark_tooltip;
 	guint editable : 1;
 	guint show_lock : 1;
 	guint secure : 1;
+	guint show_bookmark : 1;
+	guint bookmark : 1;
 };
 
 static void ephy_location_action_init       (EphyLocationAction *action);
@@ -72,6 +75,9 @@ enum
 	PROP_LOCK_TOOLTIP,
 	PROP_SECURE,
 	PROP_SHOW_LOCK,
+	PROP_BOOKMARK_TOOLTIP,
+	PROP_BOOKMARK,
+	PROP_SHOW_BOOKMARK,
 	PROP_WINDOW
 };
 
@@ -278,6 +284,42 @@ sync_show_lock (GtkAction *gaction,
 	ephy_location_entry_set_show_lock (entry, priv->show_lock);
 }
 
+static void
+sync_bookmark_tooltip (GtkAction *gaction,
+		       GParamSpec *pspec,
+		       GtkWidget *proxy)
+{
+	EphyLocationAction *action = EPHY_LOCATION_ACTION (gaction);
+	EphyLocationActionPrivate *priv = action->priv;
+	EphyLocationEntry *entry = EPHY_LOCATION_ENTRY (proxy);
+
+	ephy_location_entry_set_bookmark_tooltip (entry, priv->bookmark_tooltip);
+}
+
+static void
+sync_bookmark (GtkAction *gaction,
+	       GParamSpec *pspec,
+	       GtkWidget *proxy)
+{
+	EphyLocationAction *action = EPHY_LOCATION_ACTION (gaction);
+	EphyLocationActionPrivate *priv = action->priv;
+	EphyLocationEntry *entry = EPHY_LOCATION_ENTRY (proxy);
+
+	ephy_location_entry_set_bookmark (entry, priv->bookmark);
+}
+
+static void
+sync_show_bookmark (GtkAction *gaction,
+		    GParamSpec *pspec,
+		    GtkWidget *proxy)
+{
+	EphyLocationAction *action = EPHY_LOCATION_ACTION (gaction);
+	EphyLocationActionPrivate *priv = action->priv;
+	EphyLocationEntry *entry = EPHY_LOCATION_ENTRY (proxy);
+
+	ephy_location_entry_set_show_bookmark (entry, priv->show_bookmark);
+}
+
 static char *
 get_location_cb (EphyLocationEntry *entry,
 		EphyLocationAction *action)
@@ -396,6 +438,15 @@ connect_proxy (GtkAction *action, GtkWidget *proxy)
 		g_signal_connect_object (action, "notify::show-lock",
 					 G_CALLBACK (sync_show_lock), proxy, 0);
 
+		sync_bookmark_tooltip (action, NULL, proxy);
+		g_signal_connect_object (action, "notify::bookmark-tooltip",
+					 G_CALLBACK (sync_bookmark_tooltip), proxy, 0);
+		g_signal_connect_object (action, "notify::bookmark",
+					 G_CALLBACK (sync_bookmark), proxy, 0);
+		sync_show_bookmark (action, NULL, proxy);
+		g_signal_connect_object (action, "notify::show-bookmark",
+					 G_CALLBACK (sync_show_bookmark), proxy, 0);
+
 		entry = ephy_location_entry_get_entry (lentry);
 		g_signal_connect_object (entry, "activate",
 					 G_CALLBACK (entry_activate_cb),
@@ -472,6 +523,16 @@ ephy_location_action_set_property (GObject *object,
 		case PROP_SHOW_LOCK:
 			priv->show_lock = g_value_get_boolean (value);
 			break;
+		case PROP_BOOKMARK_TOOLTIP:
+			g_free (priv->bookmark_tooltip);
+			priv->bookmark_tooltip = g_value_dup_string (value);
+			break;
+		case PROP_BOOKMARK:
+			priv->bookmark = g_value_get_boolean (value);
+			break;
+		case PROP_SHOW_BOOKMARK:
+			priv->show_bookmark = g_value_get_boolean (value);
+			break;
 		case PROP_WINDOW:
 			priv->window = EPHY_WINDOW (g_value_get_object (value));
 			break;
@@ -510,6 +571,15 @@ ephy_location_action_get_property (GObject *object,
 		case PROP_SHOW_LOCK:
 			g_value_set_boolean (value, priv->show_lock);
 			break;
+		case PROP_BOOKMARK_TOOLTIP:
+			g_value_set_string (value, priv->bookmark_tooltip);
+			break;
+		case PROP_BOOKMARK:
+			g_value_set_boolean (value, priv->bookmark);
+			break;
+		case PROP_SHOW_BOOKMARK:
+			g_value_set_boolean (value, priv->show_bookmark);
+			break;
 		case PROP_WINDOW:
 			/* not readable */
 			break;
@@ -598,6 +668,30 @@ ephy_location_action_class_init (EphyLocationActionClass *class)
 							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
 
 	g_object_class_install_property (object_class,
+					 PROP_BOOKMARK_TOOLTIP,
+					 g_param_spec_string  ("bookmark-tooltip",
+							       "Bookmark Tooltip",
+							       "Bookmark Tooltip",
+							       NULL,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+	g_object_class_install_property (object_class,
+					 PROP_BOOKMARK,
+					 g_param_spec_boolean ("bookmark",
+							       "Bookmark",
+							       "Bookmark",
+							       FALSE,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+	g_object_class_install_property (object_class,
+					 PROP_SHOW_BOOKMARK,
+					 g_param_spec_boolean ("show-bookmark",
+							       "Show Bookmark",
+							       "Show Bookmark",
+							       FALSE,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+	g_object_class_install_property (object_class,
 					 PROP_WINDOW,
 					 g_param_spec_object ("window",
 							      "Window",
diff --git a/src/ephy-toolbar.c b/src/ephy-toolbar.c
index 613a524..b436448 100644
--- a/src/ephy-toolbar.c
+++ b/src/ephy-toolbar.c
@@ -79,6 +79,8 @@ struct _EphyToolbarPrivate
 	guint updating_address : 1;
 	guint show_lock : 1;
 	guint is_secure : 1;
+	guint show_bookmark : 1;
+	guint is_bookmark : 1;
 	guint leave_fullscreen_visible : 1;
 	guint spinning : 1;
 };
@@ -476,6 +478,16 @@ ephy_toolbar_set_navigation_tooltips (EphyToolbar *toolbar,
 	g_value_unset (&value);
 }
 
+gboolean
+ephy_toolbar_get_lock_is_shown (EphyToolbar *toolbar)
+{
+	EphyToolbarPrivate *priv = toolbar->priv;
+	gboolean show_lock = FALSE;
+	g_object_get (G_OBJECT (priv->actions[LOCATION_ACTION]),
+		      "show-lock", &show_lock, NULL);
+	return show_lock;
+}
+
 void
 ephy_toolbar_set_security_state (EphyToolbar *toolbar,
 				 gboolean is_secure,
@@ -496,6 +508,34 @@ ephy_toolbar_set_security_state (EphyToolbar *toolbar,
 		      NULL);
 }
 
+gboolean
+ephy_toolbar_get_bookmark_is_shown (EphyToolbar *toolbar)
+{
+	EphyToolbarPrivate *priv = toolbar->priv;
+	gboolean show_bookmark = FALSE;
+	g_object_get (G_OBJECT (priv->actions[LOCATION_ACTION]),
+		      "show-bookmark", &show_bookmark, NULL);
+	return show_bookmark;
+}
+
+void
+ephy_toolbar_set_is_bookmark (EphyToolbar *toolbar,
+				 gboolean is_bookmark,
+				 gboolean show_bookmark,
+				 const char *tooltip)
+{
+	EphyToolbarPrivate *priv = toolbar->priv;
+
+	priv->show_bookmark = (show_bookmark != FALSE);
+	priv->is_bookmark = (is_bookmark != FALSE);
+
+	g_object_set (priv->actions[LOCATION_ACTION],
+		      "bookmark-tooltip", tooltip,
+		      "show-bookmark", priv->show_bookmark && priv->is_bookmark,
+		      "bookmark", priv->is_bookmark,
+		      NULL);
+}
+
 void
 ephy_toolbar_set_spinning (EphyToolbar *toolbar,
 			   gboolean spinning)
diff --git a/src/ephy-toolbar.h b/src/ephy-toolbar.h
index 3ed7aa3..c6454f0 100644
--- a/src/ephy-toolbar.h
+++ b/src/ephy-toolbar.h
@@ -96,6 +96,15 @@ void		ephy_toolbar_set_security_state		(EphyToolbar *toolbar,
 							 const char *stock_id,
 							 const char *tooltip);
 
+gboolean	ephy_toolbar_get_lock_is_shown		(EphyToolbar *toolbar);
+
+void		ephy_toolbar_set_is_bookmark 		(EphyToolbar *toolbar,
+							 gboolean is_bookmark,
+							 gboolean show_bookmark,
+							 const char *tooltip);
+
+gboolean	ephy_toolbar_get_bookmark_is_shown	(EphyToolbar *toolbar);
+
 void		ephy_toolbar_set_spinning		(EphyToolbar *toolbar,
 							 gboolean spinning);
 
diff --git a/src/ephy-window.c b/src/ephy-window.c
index c2d5295..bd8194f 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -109,7 +109,9 @@ static void sync_tab_security			(EphyEmbed  *embed,
 static void sync_tab_zoom			(EphyEmbed *embed,
 						 GParamSpec *pspec,
 						 EphyWindow *window);
-
+static void sync_tab_is_bookmark		(EphyEmbed *embed,
+						 GParamSpec *pspec,
+						 EphyWindow *window);
 
 static const GtkActionEntry ephy_menu_entries [] = {
 
@@ -1482,6 +1484,39 @@ sync_tab_message (EphyEmbed *embed, GParamSpec *pspec, EphyWindow *window)
 		gtk_statusbar_push (s, window->priv->tab_message_cid, message);
 	}
 }
+static void
+sync_tab_is_bookmark (EphyEmbed *embed,
+		      GParamSpec *pspec,
+		      EphyWindow *window)
+{
+	EphyBookmarks *bookmarks;
+	EphyNode *node;
+	gboolean show_bookmark, is_bookmark;
+	const char *location;
+
+	EphyToolbar *toolbar;
+
+	show_bookmark = is_bookmark = FALSE;
+	location = ephy_embed_get_address (embed);
+	toolbar = EPHY_TOOLBAR (ephy_window_get_toolbar (window));
+	bookmarks = ephy_shell_get_bookmarks (ephy_shell);
+
+	node = ephy_bookmarks_find_bookmark (bookmarks, location);
+
+	show_bookmark = (ephy_toolbar_get_lock_is_shown (toolbar) == FALSE);
+
+	if (node != NULL)
+	{
+		is_bookmark = TRUE;
+	}
+	else
+	{
+		is_bookmark = FALSE;
+	}
+
+	ephy_toolbar_set_is_bookmark (window->priv->toolbar, is_bookmark,
+				      show_bookmark, location);
+}
 
 static void
 sync_tab_navigation (EphyEmbed *embed,
@@ -2366,6 +2401,9 @@ ephy_window_set_active_tab (EphyWindow *window, EphyEmbed *new_embed)
 						      G_CALLBACK (sync_tab_icon),
 						      window);
 		g_signal_handlers_disconnect_by_func (embed,
+						      G_CALLBACK (sync_tab_is_bookmark),
+						      window);
+		g_signal_handlers_disconnect_by_func (embed,
 						      G_CALLBACK (sync_tab_message),
 						      window);
 
@@ -2409,6 +2447,9 @@ ephy_window_set_active_tab (EphyWindow *window, EphyEmbed *new_embed)
 		g_signal_connect_object (embed, "notify::address",
 					 G_CALLBACK (sync_tab_address),
 					 window, 0);
+		g_signal_connect_object (embed, "notify::address",
+					 G_CALLBACK (sync_tab_is_bookmark),
+					 window, 0);
 		g_signal_connect_object (embed, "notify::icon",
 					 G_CALLBACK (sync_tab_icon),
 					 window, 0);
