35,719 Modules match your search

Extend and customize Drupal functionality with contributed modules. If a module doesn't quite do what you want it to do, if you find a bug or have a suggestion, then join forces and help the module maintainer. Or, share your own by starting a new module.


Screenshot of the media browser

The Media module provides an extensible framework for managing files and multimedia assets, regardless of whether they are hosted on your own site or a 3rd party site - it is commonly referred to as a 'file browser to the internet'.

Media is a drop-in replacement for the Drupal core upload field with a unified User Interface where editors and administrators can upload, manage, and reuse files and multimedia assets. Any files uploaded before Media was enabled will automatically take advantage of the many of the features it comes with.

Media's aim is to solve Drupal's long standing media handling problem.

Drupal 8

Media for Drupal 8 is undergoing a re-architecture to individual components. See this issue for more detail. Media will eventually be ported to Drupal 8, but more as a proof of concept of these smaller modules. You can still do a lot with individual pieces.


Entity reference

Provides a field type that can reference arbitrary entities:

  • A generic entity reference field
  • Four widgets:
    • Two implemented on top of the Options module (Select and Radios/Checkboxes),
    • Two autocomplete widgets (one with one text field per entry, one tag-style with comma-separated entries in the same text field)
  • Two formatters:
    • A "Label" formatter, with optional link that displays the label of the referenced entity (the node title, the user name, etc.)
    • A "Rendered entity" formatter, that renders the references entity using a configurable view mode
  • Integration with Views (for both forward and backward references)
  • Integration with Entity Metadata (and as a consequence with Search API and the like)
  • Integration with Devel generate
  • Integration with Feeds and Migrate (>= 2.3) for painless data import

This modules depends on Entity API and CTools.

Modules extending Entity reference functionality:



Image CAPTCHA example

A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. The purpose of CAPTCHA is to block form submissions by spambots, which are automated scripts that post spam content everywhere they can. The CAPTCHA module provides this feature to virtually any user facing web form on a Drupal site.

Co-maintainer wanted

We do this our spare time, which is unfortunately almost nonexistent at the moment due to real life obligations. To give the CAPTCHA module the required level of maintenance, an extra co-maintainer would be welcome. If you're interested in helping with this very popular module, please contact me or open an issue in the CAPTCHA module issue tracker.


Views Bulk Operations (VBO)

Views Bulk Operations (VBO)

This module augments Views by allowing bulk operations to be executed on the displayed rows. It does so by showing a checkbox in front of each node, and adding a select box containing operations that can be applied. Drupal Core or Rules actions can be used.

7.x-3.x requires Entity API.



  • Views 7.x-3.x works with VBO 7.x-3.x
  • Views 6.x-2.x works with VBO 6.x-1.x
  • Views 6.x-3.x works with VBO 6.x-1.10 and above
  • VBO 6.x-3.x is obsolete




An Overview of Panels

The Panels module allows a site administrator to create customized layouts for multiple uses. At its core it is a drag and drop content manager that lets you visually design a layout and place content within that layout. Integration with other systems allows you to create nodes that use this, landing pages that use this, and even override system pages such as taxonomy and the node page so that you can customize the layout of your site with very fine grained permissions.



Variable module provides a registry for meta-data about Drupal variables and some extended Variable API and administration interface.

This is an API module so it must be installed only when other modules require it.

Module Developers: Please declare your variables.

Add-ons for module developers here: Variable Extra

This is a nice introduction to the module by Lullabot, Module Monday: Variable.


  • So other modules can know about your module's variables and they can be translated, exported, used in views, etc.
  • You'll get automatic variable edit forms, tokens, access control and uninstall for free
  • Your module's variables will be allowed for Variable Realms being able to get values for each language (Internationalization) or Domain (Variable Domain)



For Drupal 8, the query log has been moved to the webprofiler module which is now its own module within this project.

A suite of modules containing fun for module developers and themers ...


Localization update

Localization update - Translation updates page

Automatically downloads and updates your translations by fetching them from localize.drupal.org or any other Localization server.


Menu block

Screenshot of the configuration of a block provided by "Menu block".

This module provides configurable blocks of menu links with advanced features not available in Drupal 8 core.




Context allows you to manage contextual conditions and reactions for different portions of your site. You can think of each context as representing a "section" of your site. For each context, you can choose the conditions that trigger this context to be active and choose different aspects of Drupal that should react to this active context.

Think of conditions as a set of rules that are checked during page load to see what context is active. Any reactions that are associated with active contexts are then fired.

Other included modules


Global Redirect

Global Redirect

Update: For Drupal 8 please use the redirect module. This project is deprecated for D8


GlobalRedirect is a simple module which…

  1. Checks the current URL for an alias and does a 301 redirect to it if it is not being used.
  2. Checks the current URL for a trailing slash, removes it if present and repeats check 1 with the new request.
  3. Checks if the current URL is the same as the site_frontpage and redirects to the frontpage if there is a match.
  4. Checks if the Clean URLs feature is enabled and then checks the current URL is being accessed using the clean method rather than the 'unclean' method.
  5. Checks access to the URL. If the user does not have access to the path, then no redirects are done. This helps avoid exposing private aliased node's.
  6. Make sure the case of the URL being accessed is the same as the one set by the author/administrator. For example, if you set the alias "articles/cake-making" to node/123, then the user can access the alias with any combination of case.
  7. Most of the above options are configurable in the settings page. In Drupal 5 you can access this after enabling the globalredirect_admin module. In Drupal 6, the settings page is bundled into the module.



This is a collection of modules to extend Drupal core multilingual capabilities and be able to build real life multilingual sites. Some features:

  • Taxonomy translation (both, per language terms and translatable terms)
  • Multilingual variables
  • Multilingual blocks (control visibility per language and translate title and content)
  • Language selection (when you switch the site language you'll see only the content for that language)
  • Requires Variable module 2.x (Drupal 7)

Read a complete feature overview in the Internationalization handbook: Building multilingual sites .

Drupal 7 upgrade

Do read Upgrade from Drupal 6 to Drupal 7
Read more about new features on Internationalization for Drupal 7 and What's new in i18n.


IMCE Wysiwyg bridge

Allows to use IMCE module with Wysiwyg module.

Currently supported editors

  • CKEditor
  • FCKeditor
  • TinyMCE

Patches to add support for other editors are welcome.



Work in progress for a Drupal 7 integration and collaboration between redirection-type modules:

Current features:

  • Common API for loading, saving, and deleting redirects.
  • Case-insensitive redirect matching with a hook to allow other modules to narrow-down the candidate redirects.
  • Redirect counter and last used timestamp, with automatic cleanup of inactive redirects.
  • Integration with Drupal's page cache to optimize redirects and performance.
  • Complete individual redirect access API.
  • Views API integration.



Strongarm gives site builders a way to override the default variable values that Drupal core and contributed modules ship with. It is not an end user tool, but a developer and site builder tool which provides an API and a limited UI.


Menu attributes

This simple module allows you to specify some additional attributes for menu items such as id, name, class, style, and rel.

You should use this module when

  • You want to "nofollow" certain menu items to sculpt the flow of PageRank through your site
  • You want to give a menu item an ID so you can easily select it using jQuery
  • You want to add additional classes or styles to a menu item

The module currently allows you to set the following attributes for each menu item:


Field collection

Provides a field-collection field, to which any number of fields can be attached.

A field collection is internally represented as an entity, which is embedded in the host entity. Thus, if desired field collections may be viewed and edited separately too.


Email Field

This module provides a field type for email addresses.


  • validation of emails
  • turns addresses into mailto links
  • encryption of email addresses with
  • contact form (see Display settings)
  • provides Tokens (for D 7.x: use Entity tokens from the Entity API)
  • exposes fields to Views
  • can be used with Rules
  • Panels Integration

Drupal 8

The basic email field type is in core now: #1668332: Add an E-mail field type into core, making this contrib module obsolete. Specific formatters (like the contact form) can live in separate contrib modules.

D6 to D7 Upgrade

  1. Run Core upgrade path
  2. Install Content Migrate from CCK
  3. Go to "Structure" -> "Migrate Fields"
  4. Select Email fields you want to upgrade and submit the "Migrate selected fields" button


Display Suite

Layout on Field UI

Display Suite allows you to take full control over how your content is displayed using a drag and drop interface. Arrange your nodes, views, comments, user data etc. the way you want without having to work your way through dozens of template files. A predefined list of layouts (D7 only) is available for even more drag and drop fun!

By defining custom view modes (build modes in D6), you can define how one piece of content should be displayed in different places such as teaser lists, search results, the full node, views etc.

Watch a screencast to see it all in action!

Advanced options

  • Exportables
  • Add your own custom fields in the backend or in your code
  • Add custom layouts in your theme (D7 only)
  • Change labels, add styles or override field settings (semantic fields).
  • Full integration with Views and Panels
  • Extend the power of your layouts by installing Field Group
  • Optimal performance with Object cache (D6) or Entity cache (D7) integration


Block Class

CSS classes field added by the Block Class module on Block configuration form.

Block Class allows users to add classes to any block through the block's configuration interface. By adding a very short snippet of PHP to a theme's block.tpl.php file, classes can be added to the parent <div class="block ..."> element of a block. Hooray for more powerful block theming!


File Entity (fieldable files)

File entity provides interfaces for managing files. It also extends the core file entity, allowing files to be fieldable, grouped into types, viewed (using display modes) and formatted using field formatters. File entity integrates with a number of modules, exposing files to Views, Entity API, Token and more.

File Entity is required by the 7.x-2.x branch of the Media module.

The File entity project is not compatible with Media 7.x-1.x. You must use the File entity module bundled with Media 7.x-1.x.



Superfish integrates jQuery Superfish plugin with your Drupal menus.


  • Unobtrusive JavaScript.
  • Keyboard-accessible, screen reader friendly.
  • Multi-column sub-menus. (Megamenus)
  • Easing effects with the jQuery Easing plug-in.
  • Automatic sub-menu width calculation (Supersubs plugin), automatic sub-menu placement (Supposition plugin; prevents sub-menus from appearing off-screen.)
  • Touch-screen compatible. (almost)
  • Small-screen compatible. (<select> and vertical accordions)
  • Window width (client-side) and UA string (client-side and server-side) detection for touch and small screen plugins, plus Modernizr support, but no CSS media-queries.
  • RTL (Right-to-left) support.
  • And a whole lot more...


Recommended additions:


Address Field

Address field widget form

Address Field defines a new field type to store international postal addresses, implementing a subset of the top-level address elements defined in the xNAL standard (see the glossary below).

The field configuration lets you determine which elements of an address should be present in the field widget form and which ones should be rendered for display.

This module was initially developed to support address storage in Drupal Commerce customer profiles, but it is now used by a wider variety of modules dealing with physical addresses and mapping.


  • Standardized storage of international postal addresses based on the xNAL standard (the same format used by Google Maps for geocoding)
  • Per-country edit form and formatting of addresses
  • Proper formatting of address forms and output on a country by country basis as they are added to the module; see the address formats issue queue for pending country support
  • Feeds integration for address importing


Job Scheduler

Simple API for scheduling tasks once at a predetermined time or periodically at a fixed interval.

If you plan to use this API in your module in 6.x, make sure to review upcoming API changes.




Requires Views and the Date API (packaged with the Date module).

This module will display any Views date field in calendar formats, including CCK date fields, node created or updated dates, etc. Switch between year, month, and day views. Back and next navigation is provided for all views. Lots of the Calendar functionality comes from the Date module, so any time you update the Calendar module you should be sure you also update to the latest version of the Date module at the same time.

See also Date iCal, a project that contains code and features needed to either import or export dates using iCal feeds. The functionality that used to be in the Calendar iCal module has been moved into that module.

Be sure to read Debugging Information before reporting a problem. Going through those steps may resolve your problems and will help provide enough information to tell if this is a bug.