diff --git a/node_embed.module b/node_embed.module
index 2155be85..9adcf357 100644
--- a/node_embed.module
+++ b/node_embed.module
@@ -59,13 +59,29 @@ function node_embed_preprocess_node(&$vars) {
  *    The rendered HTML replacing the embed code
  */ 
 function _node_make_replacements($matches) {
+  static $nids = array();
+
   if (is_numeric($matches[1])) {
     $node = node_load($matches[1]);
     $node->node_embedded = TRUE;
-    
+
     if (!$node->status || !node_access('view', $node)) {
       return '';
     }
+
+    // Allow each node to be embedded just once to prevent loops.
+    if (isset($nids[$node->nid])) {
+      $node_page = menu_get_object('node');
+      if ($node_page && node_access('update', $node_page)) {
+        drupal_set_message(t('Loop detected while trying to embed already embedded node (node-embed code: %code). Please check the <a href="!url">nodes</a> embeds (or the embeds of it\'s embeds).', array(
+          '%code' => $matches[0],
+          '!url' => url('node/' . $node_page->nid . '/edit'),
+        )), 'error');
+        return $matches[0];
+      }
+      return '';
+    }
+    $nids[$node->nid] = $node->nid;
   }
   else {
     return '';
