diff --git a/advagg_mod/advagg_mod.admin.inc b/advagg_mod/advagg_mod.admin.inc
index 0069de4..51f9ba4 100644
--- a/advagg_mod/advagg_mod.admin.inc
+++ b/advagg_mod/advagg_mod.admin.inc
@@ -171,18 +171,23 @@ function advagg_mod_admin_settings_form() {
   $form['js']['placement']['expert'] = array(
     '#type' => 'fieldset',
     '#title' => t('Experimental Settings'),
-    '#description' => t('Here there be dragons.'),
     '#collapsible' => TRUE,
-    '#collapsed' => !variable_get('advagg_mod_js_async', ADVAGG_MOD_JS_ASYNC),
+    '#collapsed' => !variable_get('advagg_mod_js_async', ADVAGG_MOD_JS_ASYNC) && !variable_get('advagg_mod_js_async_in_header', ADVAGG_MOD_JS_ASYNC_IN_HEADER),
   );
   $form['js']['placement']['expert']['advagg_mod_js_async'] = array(
     '#type' => 'checkbox',
-    '#title' => t('Asynchronous JavaScript Execution: Add The async Tag To All Script Tags'),
+    '#title' => t('Here there be dragons! Asynchronous JavaScript Execution: Add The async Tag To All Script Tags'),
     '#default_value' => variable_get('advagg_mod_js_async', ADVAGG_MOD_JS_ASYNC),
     '#description' => t('This will cause the script to be downloaded in the background and executed out of order. This will break most javascript as most code is not async safe; only use after extensive testing! <a href="@link">More Info</a>', array(
       '@link' => 'http://peter.sh/experiments/asynchronous-and-deferred-javascript-execution-explained/',
     )),
   );
+  $form['js']['placement']['expert']['advagg_mod_js_async_in_header'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Asynchronous JavaScript Execution: Group together in the header'),
+    '#default_value' => variable_get('advagg_mod_js_async_in_header', ADVAGG_MOD_JS_ASYNC_IN_HEADER),
+    '#description' => t('This will move all async JavaScript code to the header in the same group.'),
+  );
   // Outdated settings.
   $form['js']['old'] = array(
     '#type' => 'fieldset',
diff --git a/advagg_mod/advagg_mod.module b/advagg_mod/advagg_mod.module
index 33ac532..6c18df2 100644
--- a/advagg_mod/advagg_mod.module
+++ b/advagg_mod/advagg_mod.module
@@ -141,6 +141,11 @@ define('ADVAGG_MOD_JS_DEFER_INLINE_ALTER', FALSE);
  */
 define('ADVAGG_MOD_DEFER_INLINE_JS_SKIP_LIST', '');
 
+/**
+ * Default value to move async js to the header.
+ */
+define('ADVAGG_MOD_JS_ASYNC_IN_HEADER', FALSE);
+
 // Core hook implementations.
 /**
  * Implements hook_init().
@@ -452,6 +457,24 @@ function advagg_mod_js_alter(&$js) {
 
   if (variable_get('advagg_mod_js_defer_inline_alter', ADVAGG_MOD_JS_DEFER_INLINE_ALTER)) {
     foreach ($js as $name => &$values) {
+      // Skip if not file or external.
+      if ($values['type'] !== 'file' && $values['type'] !== 'external') {
+        continue;
+      }
+
+      // Skip if not async.
+      if (empty($values['async']) && empty($item['attributes']['async'])) {
+        continue;
+      }
+
+      // Move to the header with a group of 1000.
+      $values['scope'] = 'header';
+      $values['group'] = 1000;
+    }
+  }
+
+  if (variable_get('advagg_mod_js_async_in_header', ADVAGG_MOD_JS_ASYNC_IN_HEADER)) {
+    foreach ($js as $name => &$values) {
       // Skip if not inline.
       if ($values['type'] !== 'inline') {
         continue;
