diff --git a/docs/_static/nfd-status.xsd b/docs/_static/nfd-status.xsd
index 8407a86..0052162 100644
--- a/docs/_static/nfd-status.xsd
+++ b/docs/_static/nfd-status.xsd
@@ -100,7 +100,6 @@
 <xs:complexType name="nextHopType">
   <xs:sequence>
     <xs:element type="xs:nonNegativeInteger" name="faceId"/>
-    <xs:element type="xs:nonNegativeInteger" name="endpointId"/>
     <xs:element type="xs:nonNegativeInteger" name="cost"/>
   </xs:sequence>
 </xs:complexType>
diff --git a/tests/tools/nfdc/fib-module.t.cpp b/tests/tools/nfdc/fib-module.t.cpp
index 0897c01..9476500 100644
--- a/tests/tools/nfdc/fib-module.t.cpp
+++ b/tests/tools/nfdc/fib-module.t.cpp
@@ -42,24 +42,16 @@
       <nextHops>
         <nextHop>
           <faceId>262</faceId>
-          <endpointId>1</endpointId>
           <cost>9</cost>
         </nextHop>
         <nextHop>
           <faceId>272</faceId>
-          <endpointId>2</endpointId>
           <cost>50</cost>
         </nextHop>
         <nextHop>
           <faceId>274</faceId>
-          <endpointId>3</endpointId>
           <cost>78</cost>
         </nextHop>
-        <nextHop>
-          <faceId>275</faceId>
-          <endpointId>0</endpointId>
-          <cost>80</cost>
-        </nextHop>
       </nextHops>
     </fibEntry>
     <fibEntry>
@@ -67,12 +59,10 @@
       <nextHops>
         <nextHop>
           <faceId>1</faceId>
-          <endpointId>0</endpointId>
           <cost>0</cost>
         </nextHop>
         <nextHop>
           <faceId>274</faceId>
-          <endpointId>5</endpointId>
           <cost>0</cost>
         </nextHop>
       </nextHops>
@@ -82,8 +72,8 @@
 
 const std::string STATUS_TEXT = std::string(R"TEXT(
 FIB:
-  / nexthops={face=262:1 (cost=9), face=272:2 (cost=50), face=274:3 (cost=78), face=275 (cost=80)}
-  /localhost/nfd nexthops={face=1 (cost=0), face=274:5 (cost=0)}
+  / nexthops={faceid=262 (cost=9), faceid=272 (cost=50), faceid=274 (cost=78)}
+  /localhost/nfd nexthops={faceid=1 (cost=0), faceid=274 (cost=0)}
 )TEXT").substr(1);
 
 BOOST_AUTO_TEST_CASE(Status)
@@ -91,16 +81,16 @@
   this->fetchStatus();
   FibEntry payload1;
   payload1.setPrefix("/")
-          .addNextHopRecord(NextHopRecord().setFaceId(262).setEndpointId(1).setCost(9))
-          .addNextHopRecord(NextHopRecord().setFaceId(272).setEndpointId(2).setCost(50))
-          .addNextHopRecord(NextHopRecord().setFaceId(274).setEndpointId(3).setCost(78))
-          .addNextHopRecord(NextHopRecord().setFaceId(275).setCost(80));
+          .addNextHopRecord(NextHopRecord().setFaceId(262).setCost(9))
+          .addNextHopRecord(NextHopRecord().setFaceId(272).setCost(50))
+          .addNextHopRecord(NextHopRecord().setFaceId(274).setCost(78));
   FibEntry payload2;
   payload2.setPrefix("/localhost/nfd")
           .addNextHopRecord(NextHopRecord().setFaceId(1).setCost(0))
-          .addNextHopRecord(NextHopRecord().setFaceId(274).setEndpointId(5).setCost(0));
+          .addNextHopRecord(NextHopRecord().setFaceId(274).setCost(0));
   this->sendDataset("/localhost/nfd/fib/list", payload1, payload2);
   this->prepareStatusOutput();
+
   BOOST_CHECK(statusXml.is_equal(STATUS_XML));
   BOOST_CHECK(statusText.is_equal(STATUS_TEXT));
 }
diff --git a/tools/nfd-status-http-server-files/nfd-status.xsl b/tools/nfd-status-http-server-files/nfd-status.xsl
index f6cc338..d2015b1 100644
--- a/tools/nfd-status-http-server-files/nfd-status.xsl
+++ b/tools/nfd-status-http-server-files/nfd-status.xsl
@@ -252,12 +252,6 @@
               </xsl:for-each>
             </tr>
             <tr>
-              <th>EndpointId</th>
-              <xsl:for-each select="nfd:nextHops/nfd:nextHop">
-                <td><xsl:value-of select="nfd:endpointId"/></td>
-              </xsl:for-each>
-            </tr>
-            <tr>
               <th>Cost</th>
               <xsl:for-each select="nfd:nextHops/nfd:nextHop">
                 <td><xsl:value-of select="nfd:cost"/></td>
diff --git a/tools/nfdc/fib-module.cpp b/tools/nfdc/fib-module.cpp
index 76af0aa..e040109 100644
--- a/tools/nfdc/fib-module.cpp
+++ b/tools/nfdc/fib-module.cpp
@@ -65,7 +65,6 @@
   for (const NextHopRecord& nh : item.getNextHopRecords()) {
     os << "<nextHop>"
        << "<faceId>" << nh.getFaceId() << "</faceId>"
-       << "<endpointId>" << (nh.hasEndpointId() ? nh.getEndpointId() : 0) << "</endpointId>"
        << "<cost>" << nh.getCost() << "</cost>"
        << "</nextHop>";
   }
@@ -91,13 +90,8 @@
   text::Separator sep(", ");
   for (const NextHopRecord& nh : item.getNextHopRecords()) {
     os << sep
-       << "face=" << nh.getFaceId();
-
-    if (nh.hasEndpointId() && nh.getEndpointId() != 0) {
-      os << ":" << nh.getEndpointId();
-    }
-
-    os << " (cost=" << nh.getCost() << ")";
+       << "faceid=" << nh.getFaceId()
+       << " (cost=" << nh.getCost() << ")";
   }
 
   os << "}";
