diff --git a/sys/net/gnrc/pktdump/gnrc_pktdump.c b/sys/net/gnrc/pktdump/gnrc_pktdump.c
index 56608cdadd04ba24d9f7568aaf49bc6f699ddc23..ae945d149c42a1da302128f0f0be38a800344720 100644
--- a/sys/net/gnrc/pktdump/gnrc_pktdump.c
+++ b/sys/net/gnrc/pktdump/gnrc_pktdump.c
@@ -47,6 +47,8 @@ static char _stack[GNRC_PKTDUMP_STACKSIZE];
 
 static void _dump_snip(gnrc_pktsnip_t *pkt)
 {
+    size_t hdr_len = pkt->size;
+
     switch (pkt->type) {
         case GNRC_NETTYPE_UNDEF:
             printf("NETTYPE_UNDEF (%i)\n", pkt->type);
@@ -68,24 +70,28 @@ static void _dump_snip(gnrc_pktsnip_t *pkt)
         case GNRC_NETTYPE_IPV6:
             printf("NETTYPE_IPV6 (%i)\n", pkt->type);
             ipv6_hdr_print(pkt->data);
+            hdr_len = sizeof(ipv6_hdr_t);
             break;
 #endif
 #ifdef MODULE_GNRC_ICMPV6
         case GNRC_NETTYPE_ICMPV6:
             printf("NETTYPE_ICMPV6 (%i)\n", pkt->type);
             icmpv6_hdr_print(pkt->data);
+            hdr_len = sizeof(icmpv6_hdr_t);
             break;
 #endif
 #ifdef MODULE_GNRC_TCP
         case GNRC_NETTYPE_TCP:
             printf("NETTYPE_TCP (%i)\n", pkt->type);
             tcp_hdr_print(pkt->data);
+            hdr_len = sizeof(tcp_hdr_t);
             break;
 #endif
 #ifdef MODULE_GNRC_UDP
         case GNRC_NETTYPE_UDP:
             printf("NETTYPE_UDP (%i)\n", pkt->type);
             udp_hdr_print(pkt->data);
+            hdr_len = sizeof(udp_hdr_t);
             break;
 #endif
 #ifdef MODULE_CCN_LITE_UTILS
@@ -105,6 +111,11 @@ static void _dump_snip(gnrc_pktsnip_t *pkt)
             od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT);
             break;
     }
+    if (hdr_len < pkt->size) {
+        size_t size = pkt->size - hdr_len;
+
+        od_hex_dump(((uint8_t *)pkt->data) + hdr_len, size, OD_WIDTH_DEFAULT);
+    }
 }
 
 static void _dump(gnrc_pktsnip_t *pkt)