diff --git a/reviewboard/htdocs/media/rb/js/common.js b/reviewboard/htdocs/media/rb/js/common.js
--- a/reviewboard/htdocs/media/rb/js/common.js
+++ b/reviewboard/htdocs/media/rb/js/common.js
@@ -365,6 +365,10 @@ $.fn.toggleStar = function(type, objid, default_) {
             });
 
             self.attr("src", (on ? STAR_ON_IMG : STAR_OFF_IMG));
+
+            var alt_title = on ? "Starred" : "Click to star";
+            self.attr("alt", alt_title);
+            self.attr("title", alt_title);
         });
     });
 };
diff --git a/reviewboard/reviews/datagrids.py b/reviewboard/reviews/datagrids.py
--- a/reviewboard/reviews/datagrids.py
+++ b/reviewboard/reviews/datagrids.py
@@ -21,8 +21,8 @@ class StarColumn(Column):
         self.image_url = settings.MEDIA_URL + "rb/images/star_on.png"
         self.image_width = 16
         self.image_height = 15
-        self.image_alt = "Starred"
-        self.detailed_label = "Starred"
+        self.image_alt = _("Starred")
+        self.detailed_label = _("Starred")
         self.shrink = True
 
     def render_data(self, obj):
@@ -39,8 +39,8 @@ class ShipItColumn(Column):
         self.image_url = settings.MEDIA_URL + "rb/images/shipit.png"
         self.image_width = 16
         self.image_height = 16
-        self.image_alt = "Ship It!"
-        self.detailed_label = "Ship It!"
+        self.image_alt = _("Ship It!")
+        self.detailed_label = _("Ship It!")
         self.db_field = "shipit_count"
         self.sortable = True
         self.shrink = True
@@ -49,10 +49,10 @@ class ShipItColumn(Column):
         if review_request.shipit_count > 0:
             return '<span class="shipit-count">' \
                     '<img src="%srb/images/shipit_checkmark.png?%s" ' \
-                         'width="9" height="8" alt="%s" /> %s' \
+                         'width="9" height="8" alt="%s" title="%s" /> %s' \
                    '</span>' % \
                 (settings.MEDIA_URL, settings.MEDIA_SERIAL,
-                 self.image_alt, review_request.shipit_count)
+                 self.image_alt, self.image_alt, review_request.shipit_count)
 
         return ""
 
@@ -112,9 +112,10 @@ class MyCommentsColumn(Column):
                 image_url = settings.MEDIA_URL + "rb/images/comment-small.png"
                 image_alt = _("Comments published")
 
-        return '<img src="%s?%s" width="%s" height="%s" alt="%s" />' % \
+        return '<img src="%s?%s" width="%s" height="%s" alt="%s" ' \
+               'title="%s" />' % \
                 (image_url, settings.MEDIA_SERIAL, self.image_width,
-                 self.image_height, image_alt)
+                 self.image_height, image_alt, image_alt)
 
 
 class NewUpdatesColumn(Column):
@@ -134,9 +135,10 @@ class NewUpdatesColumn(Column):
     def render_data(self, review_request):
         user = self.datagrid.request.user
         if review_request.new_review_count > 0:
-            return '<img src="%s" width="%s" height="%s" alt="%s" />' % \
+            return '<img src="%s" width="%s" height="%s" alt="%s" ' \
+                   'title="%s" />' % \
                 (self.image_url, self.image_width, self.image_height,
-                 self.image_alt)
+                 self.image_alt, self.image_alt)
 
         return ""
 
diff --git a/reviewboard/reviews/templatetags/reviewtags.py b/reviewboard/reviews/templatetags/reviewtags.py
--- a/reviewboard/reviews/templatetags/reviewtags.py
+++ b/reviewboard/reviews/templatetags/reviewtags.py
@@ -5,6 +5,7 @@ from django.db.models.query import QuerySet
 from django.template import NodeList, TemplateSyntaxError
 from django.template.loader import render_to_string
 from django.utils import simplejson
+from django.utils.translation import ugettext_lazy as _
 from djblets.util.decorators import basictag, blocktag
 from djblets.util.misc import get_object_or_none
 from djblets.util.templatetags.djblets_utils import humanize_list
@@ -517,9 +518,15 @@ def render_star(user, obj):
             "star tag received an incompatible object type (%s)" % \
             type(obj)
 
+    if starred:
+        image_alt = _("Starred")
+    else:
+        image_alt = _("Click to star")
+
     return render_to_string('reviews/star.html', {
         'object': obj_info,
         'starred': int(starred),
+        'alt': image_alt,
         'user': user,
         'MEDIA_URL': settings.MEDIA_URL,
     })
diff --git a/reviewboard/templates/reviews/star.html b/reviewboard/templates/reviews/star.html
--- a/reviewboard/templates/reviews/star.html
+++ b/reviewboard/templates/reviews/star.html
@@ -1,5 +1,5 @@
 {% if user.is_authenticated %}
-<img class="star" id="star-{{object.type}}-{{object.id}}" src="{{MEDIA_URL}}rb/images/star_{% if starred %}on{% else %}off{% endif %}.png?{{MEDIA_SERIAL}}" width="16" height="15" border="0" alt="" />
+<img class="star" id="star-{{object.type}}-{{object.id}}" src="{{MEDIA_URL}}rb/images/star_{% if starred %}on{% else %}off{% endif %}.png?{{MEDIA_SERIAL}}" width="16" height="15" border="0" alt="{{alt}}" title="{{alt}}" />
 <script type="text/javascript">
     $(document).ready(function() {
         $("#star-{{object.type}}-{{object.id}}").toggleStar(
