diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
index a9b2b4a..689a266 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/HostViewMessageHandler.java
@@ -18,6 +18,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
+import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.Host;
 import org.onosproject.net.HostLocation;
 import org.onosproject.net.host.HostService;
@@ -26,6 +27,8 @@
 import java.util.Arrays;
 import java.util.List;
 
+import static com.google.common.base.Strings.isNullOrEmpty;
+
 /**
  * Message handler for host view related messages.
  */
@@ -69,19 +72,23 @@
      */
     private static class HostTableRow extends AbstractTableRow {
 
+        private static final String TYPE_IID = "_iconid_type";
         private static final String ID = "id";
         private static final String MAC = "mac";
         private static final String VLAN = "vlan";
         private static final String IPS = "ips";
         private static final String LOCATION = "location";
 
+        private static final String HOST_ICON_PREFIX = "hostIcon_";
+
         private static final String[] COL_IDS = {
-                ID, MAC, VLAN, IPS, LOCATION
+                TYPE_IID, ID, MAC, VLAN, IPS, LOCATION
         };
 
         public HostTableRow(Host h) {
             HostLocation location = h.location();
 
+            add(TYPE_IID, getTypeIconId(h));
             add(ID, h.id().toString());
             add(MAC, h.mac().toString());
             add(VLAN, h.vlan().toString());
@@ -90,6 +97,12 @@
                            location.port().toString()));
         }
 
+        private String getTypeIconId(Host host) {
+            String hostType = host.annotations().value(AnnotationKeys.TYPE);
+            return HOST_ICON_PREFIX +
+                    (isNullOrEmpty(hostType) ? "endstation" : hostType);
+        }
+
         @Override
         protected String[] columnIds() {
             return COL_IDS;
diff --git a/web/gui/src/main/webapp/app/fw/svg/icon.css b/web/gui/src/main/webapp/app/fw/svg/icon.css
index ca9837b..3e8c433 100644
--- a/web/gui/src/main/webapp/app/fw/svg/icon.css
+++ b/web/gui/src/main/webapp/app/fw/svg/icon.css
@@ -65,16 +65,16 @@
 }
 
 
-.light svg.embeddedIcon .icon.devIcon_SWITCH {
+.light table svg.embeddedIcon {
     fill: #ccc;
 }
-.dark svg.embeddedIcon .icon.devIcon_SWITCH {
+.dark table svg.embeddedIcon {
     fill: #222;
 }
-.light svg.embeddedIcon .icon.devIcon_SWITCH .glyph {
+.light table svg.embeddedIcon .glyph {
     fill: #333;
 }
-.dark svg.embeddedIcon .icon.devIcon_SWITCH .glyph {
+.dark table svg.embeddedIcon .glyph {
     fill: #ccc;
 }
 
diff --git a/web/gui/src/main/webapp/app/fw/svg/icon.js b/web/gui/src/main/webapp/app/fw/svg/icon.js
index b63cf64..d5e2a38 100644
--- a/web/gui/src/main/webapp/app/fw/svg/icon.js
+++ b/web/gui/src/main/webapp/app/fw/svg/icon.js
@@ -39,6 +39,11 @@
         deviceOnline: 'checkMark',
         deviceOffline: 'xMark',
         devIcon_SWITCH: 'switch',
+        devIcon_ROADM: 'roadm',
+
+        hostIcon_endstation: 'endstation',
+        hostIcon_router: 'router',
+        hostIcon_bgpSpeaker: 'bgpSpeaker',
 
         tableColSortAsc: 'triangleUp',
         tableColSortDesc: 'triangleDown'
diff --git a/web/gui/src/main/webapp/app/view/host/host.css b/web/gui/src/main/webapp/app/view/host/host.css
index 94815f5..87174f9 100644
--- a/web/gui/src/main/webapp/app/view/host/host.css
+++ b/web/gui/src/main/webapp/app/view/host/host.css
@@ -19,5 +19,4 @@
  */
 
 #ov-host td {
-    height: 20px;
 }
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/app/view/host/host.html b/web/gui/src/main/webapp/app/view/host/host.html
index 3e88f6d..c7ac52a 100644
--- a/web/gui/src/main/webapp/app/view/host/host.html
+++ b/web/gui/src/main/webapp/app/view/host/host.html
@@ -7,6 +7,7 @@
            sort-callback="sortCallback(requestParams)">
         <thead>
             <tr>
+                <th colId="type" class="table-icon" sortable></th>
                 <th colId="id" sortable>Host ID </th>
                 <th colId="mac" sortable>MAC Address </th>
                 <th colId="vlan" sortable>VLAN ID </th>
@@ -18,6 +19,9 @@
         <tbody>
         <tr ng-repeat="host in ctrl.hostData"
             ng-repeat-done>
+            <td class="table-icon">
+                <div icon icon-id="{{host._iconid_type}}"></div>
+            </td>
             <td>{{host.id}}</td>
             <td>{{host.mac}}</td>
             <td>{{host.vlan}}</td>
