diff --git a/module_filter.admin.inc b/module_filter.admin.inc
index 83d4cd6..44c84ee 100644
--- a/module_filter.admin.inc
+++ b/module_filter.admin.inc
@@ -95,6 +95,15 @@ function module_filter_settings() {
     '#description' => t('When enabled, the last state (All, Update available, Security update, Unknown) will be remembered.'),
     '#default_value' => variable_get('module_filter_remember_update_state', 0),
   );
+  $form['csv'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Export modules list as a CSV file'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+  $form['csv']['button'] = array(
+    '#markup' => '<div id="csv_export"><a href="/admin/config/user-interface/modulefilter/csv">Grab the file!</a></div>',
+  );
 
   if (module_exists('page_actions')) {
     $form['tabs']['module_filter_dynamic_save_position']['#description'] .= '<br />' . t('The module %name is enabled and thus this setting will have no affect.', array('%name' => t('Page actions')));
diff --git a/module_filter.module b/module_filter.module
index b8fde5f..5d5ee71 100644
--- a/module_filter.module
+++ b/module_filter.module
@@ -35,6 +35,12 @@ function module_filter_menu() {
     'page arguments' => array('module_filter_settings'),
     'file' => 'module_filter.admin.inc'
   );
+  $items['admin/config/user-interface/modulefilter/csv'] = array(
+    'title' => 'CSV file with a modules list',
+    'description' => 'Grab the file!',
+    'access arguments' => array('administer module filter'),
+    'page callback' => 'module_filter_csv_export',
+  );
   return $items;
 }
 
@@ -256,3 +262,28 @@ function module_filter_get_id($text) {
 function module_filter_recent_filter($var) {
   return (!($var < REQUEST_TIME - 60*60*24*7));
 }
+
+function module_filter_csv_export(){
+  $columns = array('name','description','package','version');
+  $result = db_query("SELECT name, info FROM {system} WHERE type = 'module' AND status = 1 ORDER BY name");
+    while ($module = $result->fetchObject()) {
+      $module->info = unserialize($module->info);
+      $module->info = array_intersect_key($module->info, array_flip($columns));
+      $modules[$module->name] = $module;
+    }
+
+  drupal_add_http_header('Content-Type', 'text/csv');
+  drupal_add_http_header('Content-Disposition', 'attachment;filename=modules_list.csv');
+  
+  $fh = fopen('php://output', 'w');
+  fputcsv($fh, array(t('Name'), t('Description'), t('Package'), t('Version')));
+  
+  foreach($modules as $module) {
+    fputcsv($fh, array($module->info['name'], $module->info['description'],
+    $module->info['package'], $module->info['version']));
+  }
+  
+  fclose($fh);
+  
+  drupal_exit();
+}
