Drupal is a CMS which has gained popularity partly due to its impressive amount of contributed modules available (more than 23,000 at the time of writing this article). Yet Drupal core is one of the most flexible platform out there, it would be useless without great modules to leverage its flexibility.
Some contributed modules are simply essential to build any great Drupal website. Here is a list of 15 modules that every Drupal website should use.
No surprise here. Views is widely recognized by many as the most useful contributed module for Drupal 7 and below. It allows you to generate listing pages or blocks dynamically from contents stored in the database, and without writing a single line of code. It provides many features and is very flexible. Indeed, Views is so powerful that it is being integrated as part of Drupal 8 core.
As the name suggests, Administration menu is really useful for administrators. It provides a dropdown variant of the administration toolbar, and includes some useful shortcuts, like the ability to clear any cache from a single click on an item. When building a website, it's a huge time saver.
The Token module provides real-time string substitution capabilities. It's not designed to be used by itself but rather to be leveraged by other modules to extend their flexibility. Since many modules from this list depend or integrate with Token, I naturally listed it as an essential module, too.
Webform allows you to build custom forms without writing a module. Application forms, surveys... you name it. This is the fastest and simplest way to increase your visitor conversion ratio.
By default, Drupal does not generate meta tags intended to be used by search engines, such as the description or the keywords of the page. While most of these tags are useful only if you care about your SEO, you should always care about the meta description as it is the introduction message that might be displayed by search engines when listing your website. Metatag allows you generate automatic descriptions from content bodies. Additionally, it provides support and full control over OpenGraph meta data that might help you in your social media strategy.
Pathologic is a very simple module but yet a very useful one. It is a filter module that replaces in the input text every internal link, such a node/123, to its alias. A must for SEO.
Linkit is a module designed to complement your WYSIWYG editor. It allows you to create link to entities by picking them in an autocomplete field, rather than having to type yourself the HTML code and the internal path. Combined with Pathologic, creating deep links is not a problem anymore.
IMCE is another module designed to complement your WYSIWYG editor. It's a remote file browser which allows you to upload and insert images of files directly into HTML bodies, such as long text fields or block contents. When using IMCE, you definitely want to have a look at the plug-ins available to extend its capabilities, such a renaming files, creating directories, etc...
In version 7 and below, Drupal core does not provide a visual editor, or WYSIWYG editor. This may be frustrating if you are not well-versed with HTML syntax. CKEditor comes to your rescue. It's a great editor, and itcan integrate with the Linkit and the IMCE modules suggested above. It has been chosen in Drupal 8 as the default visual editor.
Global Redirect is a module that redirects system URLs to URL alias when available. It is an efficient way to prevent duplicate contents and improve your SEO.
The flexibility of the core menu system of Drupal is limited in terms of theming. It does not allow you to add classes to your menu items. Menu attributes solves this and also allows you to add other useful attributes, such as targets or keyboard shortcuts.
Similar to Menu attributes, the Block Class module allows you to add CSS classes to any of your blocks. Easy to use, it adds a great flexibility while theming your website.
Backup and Migrate
Backup and migrate allows you to create or schedule backups of either the database or the files of the website. With additional plug-ins, it can also store the backups on the cloud (Amazon S3, Dropbox, etc...). It's a must have because everybody care about their data.
On busy websites, the module administration page may quickly become unmanageable, especially if considering that many modules are actually packages of sub-modules. When the list of modules/sub-modules grows, their dependencies clutter the efficiency of the text search of your browser to successfully locate a module. Module filter will then come to your rescue by providing real-time filter which uses only module names.
Drush is not really a module, but is useful enough to be listed here. It is a tools that allows Drupal administrators to manage their websites through the command-line. It provides many commands, from the full installation of the Drupal package, to the installation of any module with all its dependencies. It is the Swiss army knife of any Drupal developer.