Skip to main content

Moodle 4.4

Release date: 22 April 2024

Here is the full list of fixed issues in 4.4.0.

If you are upgrading from a previous version, please see Upgrading in the user docs.

Server requirements

These are just the minimum supported versions. We recommend keeping all of your software and operating systems up-to-date.

  • Moodle upgrade: Moodle 4.1.2 or later.
  • PHP version: minimum PHP 8.1.0 Note: minimum PHP version has increased since Moodle 4.3. PHP 8.3.x is supported too. See PHP for details.
  • PHP extension sodium is required. See Environment - PHP extension sodium.
  • PHP setting max_input_vars must be >= 5000. For further details, see Environment - max input vars.
  • PHP variants: Only 64-bit versions of PHP are supported. Note: Changed since 4.1.

Database requirements

Moodle supports the following database servers. Again, version numbers are just the minimum supported version. We recommend running the latest stable version of any software.

DatabaseMinimum versionRecommended
PostgreSQL13 (increased since Moodle 4.1)Latest
MySQL8.0 (increased since Moodle 4.1)Latest
MariaDB10.6.7 (increased since Moodle 4.1)Latest
Microsoft SQL Server2017Latest
Oracle Database19cLatest
Database prefixes

Since Moodle 4.3, the maximum length for the database prefix ($CFG->prefix) is 10 characters. Installation or upgrade won't be possible with longer prefixes.

Client requirements

Browser support

Moodle is compatible with any standards compliant web browser. We regularly test Moodle with the following browsers:


  • Chrome
  • Firefox
  • Safari
  • Edge


  • MobileSafari
  • Google Chrome

For the best experience and optimum security, we recommend that you keep your browser up to date.

Major UX improvements

Course hierarchy improvements

  • MDL-80923 - Remove the Custom checkbox from the Settings page for all course formats
  • MDL-80621 - Update activity separators with "+" buttons styling
  • MDL-80622 - Improve the shadow element when dragging activity cards
  • MDL-80620 - Improve the collapse/expand chevrons styling
  • MDL-80219 - Improve activity and section cards
  • MDL-80460 - Create section with "New section" name and stop using the auto-renaming for the topics course format
  • MDL-80418 - Homogenise Adding / Updating activity titles, regardless the section where it belongs
  • MDL-80541 - Homogenise the section form title
  • MDL-80248 - In course/section.php, display the General section instead of displaying all the course sections
  • MDL-80249 - In course/section.php, hide secondary navigation and add breadcrumb
  • MDL-80557 - Change the default order for the course formats
  • MDL-79986 - Create a new course section page
  • MDL-80461 - Eliminate erroneous references to topic and weeks from the UI
  • MDL-80186 - Add delegate section fields to the course_section table
  • MDL-80203 - Delegate editing options for delegated sections
  • MDL-80220 - Update the section visibility badge to use status dropdown like the activities
  • MDL-79987 - Improving the course layout one section per page

Other major features

Messaging phase 2 - Expand Matrix integration & Communication API

  • MDL-78551 - Implement initial group support in Communication providers
  • MDL-77444 - Add initial Mobile App support to the communication API

Notification improvements phase 1

  • MDL-4188 - Send course welcome message for manual and self enrolments
  • MDL-46886 - Send users a notification message before they are unenrolled due to inactivity
  • MDL-79131 - Send administrators a notification when tasks reach their max fail delay
  • MDL-79714 - Web and email notification default on for new installs


  • MDL-79239 - Require Registration for BigBlueButton Plugin Server Credentials
  • MDL-77660 - Completion extension using Subplugins
  • MDL-79750 - Make SHA256 the default algorithm for BigBlueButton requests
  • MDL-79537 - Remove 'bbb-meeting-size-hint' as a meta parameter on create

Quiz and questions

  • MDL-79863 - Integration of the ordering question type into Moodle core including improved accessibility and configuration process
  • MDL-74610 - Let a quiz have multiple total grades (e.g. for each section)
  • MDL-67259 - Quiz autosave should reassure users that it is working
  • MDL-80900 - Review quiz attempt summary improvements
  • MDL-80099 - Migrate quiz statistics callbacks to Hooks API

Report builder

  • MDL-79510 - Allow Config changes report to filter on Plugin
  • MDL-80342 - Allow to filter users in the custom reports by their cohorts
  • MDL-77805 - Improve report builder filters dropdown UI
  • MDL-77804 - Improve report builder inline filter forms UI
  • MDL-79270 - Improve "Browse users" page using Report builder functionality
  • MDL-80245 - Support custom reports tagging
  • MDL-80722 - Course report source - add time created and time modified
  • MDL-80619 - Add capability to view any report in report builder
  • MDL-81126 - Add relative date filter option to select dates after given period
  • MDL-78427 - New theme usage report
  • MDL-80325 - Make "delete" actions in report builder reports red
  • MDL-81073 - Add version and expiry date to manage badges page filters
  • MDL-79200 - Improve how custom reports filter file types by type
  • MDL-79216 - Improve how custom reports filter files by size
  • MDL-80843 - Add authentication method column to user entity
  • MDL-79646 - Add animation to indicate completion of drag/drop when editing report
  • MDL-79629 - Enhance report editor filter/condition selection to use autocomplete
  • MDL-80063 - Custom report on assigned roles across the site
  • MDL-79788 - Convert tag collection report to a report builder system report
  • MDL-80560 - New report for "Browse user list" follow up - picture, download, identity fields
  • MDL-79346 - Add filter/condition on cohort visibility field
  • MDL-80329 - Report builder filters should trim the spaces
  • MDL-79552 - Add cohort data (columns/filters) to user-focused reports
  • MDL-79532 - Add blog "title with link" column for custom reporting
  • MDL-80052 - Convert remaining reports inside Badges to report builder

TinyMCE 6

  • MDL-77325 - Make TinyMCE the default editor for existing installs
  • MDL-79709 - Create Capability for TinyMCE Premium plugins
  • MDL-78096 - TinyMCE - Improve image adding

Content bank and H5P

  • MDL-79543 - H5P activity number of attempts no longer displayed
  • MDL-80028 - Grant non-editing teacher mod/h5pactivity:reviewattempts
  • MDL-80754 - H5P activity reports page: Add the total attempts to the table column
  • MDL-80055 - Restyle and re-position the 'Edit H5P content' link within the H5P activity page.

Accessibility improvements

  • MDL-78994 - Guest policy link should be early in the page's tab order for keyboard navigation users
  • MDL-80431 - Do not use <fieldset> tag for form elements group that does not have a label
  • MDL-81066 - Validate form fields on submit or change, not just tab

Usability improvements

  • MDL-77980 - Grade item column headings in the grader report should link to activities
  • MDL-69541 - Add option to "Post to all groups" in the quick discussion creation
  • MDL-78850 - Clicking on Calendar date through Course page should select course in dropdown and show course events on Calendar event page
  • MDL-79769 - Login Page - Add ability to show password in plain text
  • MDL-78335 - Normalise the date completion criteria date string
  • MDL-79912 - Improve the backup/restore workflow: Create index page
  • MDL-79915 - Improve the backup/restore workflow: Improve UI for Restore
  • MDL-81337 - Course page plus icon should have a tooltip to inform you what happens if you click it
  • MDL-80235 - SCORM should not allow 0 as minimum score required
  • MDL-79920 - Authentication: MFA - Improve user factor setup
  • MDL-78425 - Theme Selector: Improve UI
  • MDL-81172 - Async Backup on by default from Install

Other Highlights

Functional changes

  • MDL-78285 - Reintroduce activity mime file type icons (meaning each file has its extension icon)
  • MDL-78284 - Implement the new activity icons design
  • MDL-43820 - tool_uploadcourse supports multiple enrolment instances of the same type
  • MDL-80871 - Add option to user tours to make them always show
  • MDL-79044 - Improve gradebook export formats order
  • MDL-73626 - Can no longer release individual grades when assignment is anonymous
  • MDL-71744 - Configurable defaults for Announcement forums
  • MDL-73852 - Allow using meta enrolment when uploading course via CSV
  • MDL-80856 - Improve the sticky footer maximum width to dynamically adapt to the page content width
  • MDL-79959 - Add custom field picker for SSO identification in repository_equella
  • MDL-80828 - Activity action menu should not have a submenu panel when only two choices are available
  • MDL-70384 - Allow dialogues for adding database fields to use Bootstrap so they look consistent with other pages
  • MDL-80949 - Database field - Remove autolink setting for short text field type

For administrators

  • MDL-43056 - Add the capability tool/uploadcourse:use for tool_uploadcourse
  • MDL-80914 - Reintroduce the LTI external tool option to set custom params at the instance level
  • MDL-79128 - Tasks: Implement no-retry flag for ad-hoc tasks and clean up records of historical failed tasks
  • MDL-79130 - Tasks: Ad-hoc tasks shouldn't retry after max fail delay
  • MDL-80866 - Disabled by default Chat and Survey activity for new installations
  • MDL-67898 - Have an admin_setting which exposes a check
  • MDL-80548 - Add bulk actions to the"Browse list of users" page
  • MDL-80554 - Show debugging calls in tasks logs regardless of debugdisplay
  • MDL-79563 - Add cmid option for backup and course option for restore for CLI script
  • MDL-79564 - Implement import CLI script
  • MDL-80267 - Asynchronous restore keeps deleting course/student content - Using no-retry flag
  • MDL-80328 - Use a confirmation modal when deleting a user
  • MDL-78426 - Theme Selector: Settings UI


  • MDL-63128 - Redis Cache & Session: implement cluster support
  • MDL-74676 - Speed up limittoenrolled option in course search
  • MDL-65403 - messaging_cleanup_task should use an indexed DB field for improved performance
  • MDL-66546 - Add support to unix:// connections to redis caching/sessions.
  • MDL-79337 - Unnecessary call to set_user_preference when loading a page with an already open drawer in Boost theme
  • MDL-73703 - LDAP user sync: update users in chunks

Security improvements

  • MDL-78511 - Add SMS as a factor in multi-factor authentication

For developers

  • MDL-78334 - Provide a mechanism to deprecate and detect deprecated CSS
  • MDL-73483 - Add hooks (instead of callbacks) to extend course edit form
  • MDL-80838 - Add support for PSR-20 (Clock) to allow better time management
  • MDL-80005 - Add PARAM_ definition class
  • MDL-79151 - Backup of custom fields for courses should include images
  • MDL-80082 - In tables and reports, when there is no entry, give out the "Nothing to display" string as notification instead of header
  • MDL-81011 - Allow hooks to use attributes instead of described_hook interface
  • MDL-79974 - Improve developer experience for exceptions when developing and make it easier to open in editor
  • MDL-80850 - Create JavaScript core/dropzone module to handle dropzone
  • MDL-79520 - Replace custom Clever SSO implementation with OIDC implementation
  • MDL-80207 - Replace use of Horde with Roundcube
  • MDL-80736 - Move AWS helper code to core namespace
  • MDL-80566 - Convert callback 'bulk_user_actions' to hook
  • MDL-80096 - Add a tool to execute behat generators in the current instance
  • MDL-79985 - Create a dropdown form field for advanced options

Upgrade Boost theme to use Bootstrap 5.x

  • MDL-80397 - Refactor some .card-* helpers dropped in Boostrap 5
  • MDL-80395 - Refactor dropped mixins in Bootstrap 5
  • MDL-80396 - Refactor .media component dropped in Bootstrap 5
  • MDL-75673 - Add PopperJS v2 library
  • MDL-80244 - Refactor Navbars preparing them for Boostrap 5
  • MDL-80259 - Refactor .badge-[warning|info|...] and .badge-pill classes dropped in Bootstrap 5
  • MDL-80238 - Refactor .jumbotron dropped in Bootstrap 5
  • MDL-75670 - Refactor Bootstrap form layouts preparing them for Boostrap 5

Web service additions and updates

  • MDL-81065 - Create a new Web Service to be able to retrieve filter configuration and specific overrides per context
  • MDL-65978 - New web services for managing blog entries
  • MDL-78088 - New web services for the user data privacy section (Privacy and policies)
  • MDL-80300 - New web service for creating quiz overrides


  • MDL-75794 - Deprecate i_add_a_field_to_database_and_i_fill_the_form_with() and i_add_an_entry_to_database_with() behat steps
  • MDL-77038 - Deprecate stateactions::section_move method
  • MDL-67667 - Deprecate is_blocking() for adhoc and scheduled tasks in Task API
  • MDL-81326 - Deprecate book_get_nav_classes
  • MDL-72656 - Deprecate old course renderer methods
  • MDL-74238 - Final deprecation of get_available_completion_tabs() and navigation()
  • MDL-73975 - Final deprecation management_heading/course_search_form
  • MDL-73545 - Final deprecation lesson_add_header_buttons
  • MDL-73426 - Final deprecation print_badge_tabs
  • MDL-72376 - Final deprecation of book_get_nav_types
  • MDL-73117 - Final deprecation of three-month calendar pseudo block items
  • MDL-70483 - Final deprecation of get_forum_discussions_paginated web service
  • MDL-80703 - Final deprecation of block_calendar_upcoming::get_upcoming_content()
  • MDL-71950 - Final deprecation display_help_icon() and print_help_icon()
  • MDL-80409 - Final deprecation of download_as_dataformat method
  • MDL-71732 - Final deprecation of functions in lib/deprecatedlib.php initially deprecated in 4.0
  • MDL-72438 - Final deprecations in core_question initially deprecated in 4.0
  • MDL-71734 - Final deprecation of strings initially deprecated in 4.0

Component API updates