diff --git a/metatag.info b/metatag.info
index 4c97eca..654772f 100644
--- a/metatag.info
+++ b/metatag.info
@@ -7,4 +7,5 @@ dependencies[] = ctools
 configure = admin/config/search/metatags
 
 files[] = metatag.inc
+files[] = metatag.migrate.inc
 files[] = metatag.test
diff --git a/metatag.migrate.inc b/metatag.migrate.inc
new file mode 100644
index 0000000..948fb37
--- /dev/null
+++ b/metatag.migrate.inc
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * @file
+ * Metatag support for migrate.
+ */
+
+/**
+ * Implements hook_migrate_api().
+ */
+function metatag_migrate_api() {
+  return array('api' => 2);
+}
+
+/**
+ * Metatags destination handler.
+ */
+class MigrateMetatagHandler extends MigrateDestinationHandler {
+
+  public function __construct() {
+    $this->registerTypes(array('node', 'user', 'taxonomy_term'));
+  }
+
+  /**
+   * Implements MigrateDestinationHandler::fields().
+   */
+  public function fields() {
+    $fields = array();
+    $elements = metatag_get_info();
+
+    foreach ($elements['tags'] as $value) {
+      $metatag_field = 'metatag_' . $value['name'];
+      $fields[$metatag_field] = $value['description'];
+    }
+
+    return $fields;
+  }
+
+  /**
+   * Implements MigrateDestinationHandler::prepare().
+   */
+  public function prepare($entity, stdClass $row) {
+    $elements = metatag_get_info();
+
+    foreach ($elements['tags'] as $value) {
+      $metatag_field = 'metatag_' . $value['name'];
+      if (isset($entity->$metatag_field)) {
+        $entity->metatags[$metatag]['value'] = $entity->$metatag_field;
+        unset($entity->$metatag_field);
+      }
+    }
+  }
+}
