Skip to main content

Moodle 4.3

Release date: 9 October 2023

Here is the full list of fixed issues in 4.3.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 3.11.8 or later.
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.2.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 Database19Latest

Note that, 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


  • MDL-77638 - Create a modal form for basic addition of grade categories in Gradebook setup
  • MDL-78217 - Improve the overriding of weights in the Gradebook setup
  • MDL-77447 - Make the grade item status indicators consistent across the Gradebook reports
  • MDL-77639 - Create a modal form for basic addition of outcomes in Gradebook setup
  • MDL-77035 - Improve the UI related to the bulk move functionality in Gradebook setup
  • MDL-77637 - Create a modal form for basic addition of grade item in Gradebook setup
  • MDL-78100 - Add an option to clear all applied filters in the grader report

Activity cards redesign

  • MDL-78283 - Add radio dropdown interaction to group mode icon
  • MDL-78279 - Create new details dropdown components
  • MDL-78282 - Add radio dropdown interaction to availability badge
  • MDL-78280 - Add details dropdown to completion criteria badge
  • MDL-78288 - Add access restriction quickform direct link button to restrictions details dropdown
  • MDL-78200 - Add the group mode indicator to the activity card
  • MDL-78954 - Improve action menu subpanel aesthetics and effects
  • MDL-78826 - Improve accessibility of keyboard control for the generic dropdowns
  • MDL-78607 - Improve section and activity settings form to load access restrictions
  • MDL-78665 - Create a generic submenu for status selection
  • MDL-78286 - Add completion quickform direct link button to completion details dropdown
  • MDL-78207 - Implement activity card information badge integration
  • MDL-78203 - Add group mode option to activity actions submenu
  • MDL-78201 - Create the groupmode state actions
  • MDL-78199 - Improve activity card styling
  • MDL-78744 - Refactor 'activity_information' output class
  • MDL-78289 - Improve the student completion criteria display format
  • MDL-78204 - Add "show more" / "show less" options for access restrictions on course page
  • MDL-78291 - Modify the availability activity action menu to open in a subpanel

Other major features

Messaging phase 1 - Integrate chat services

  • MDL-77576 - Matrix integration MVP - Matrix is available for use in courses
  • MDL-78619 - Add a custom link communication provider
  • MDL-76704 - Admin settings to control Matrix room creation for Courses
  • MDL-77357 - Create dynamic form fields feature for communication plugins
  • MDL-77252 - Add banners to indicate room creation status to teachers
  • MDL-78129 - Allow teachers, managers and admins to moderate their courses' Matrix rooms
  • MDL-77917 - Allow versioned APIs for clients in Matrix provider

LTI external tools - Improve configuration and management in courses

  • MDL-78575 - Centralised page to view and manage preconfigured LTI external tools in a course
  • MDL-78909 - Enable setting whether a preconfigured tool appears in the activity chooser in a course
  • MDL-78916 - Simplify the creation of an LTI external tool activity in a course
  • MDL-78576 - Improve deletion of course preconfigured LTI tools

Multi-factor Authentication

MoodleNet integration - Phase 2

  • MDL-75318 - Allow teachers to share courses to MoodleNet (all activities)
  • MDL-78267 - Add ability for teachers to customise courses shared to MoodleNet
  • MDL-75502 - Implement share progress page for content shared to MoodleNet
  • MDL-77296 - Record MoodleNet share progress data in a consumable format

Default site completion criteria settings

  • MDL-78528 - Redesign the Default activity completion page
  • MDL-78517 - Homogenise the course completion conditions
  • MDL-78531 - Create a new 'Courses > Default settings' section in Site administration
  • MDL-78530 - Consider the default site completion settings during activity creation
  • MDL-78527 - Improve the completion conditions form
  • MDL-78633 - Use tertiary navigation selector in Course completion settings
  • MDL-79093 - Order activities by display name in Default activity completion

TinyMCE 6

  • MDL-75268 - Create TinyMCE Premium plugins integration
  • MDL-78613 - Add source code formatting and styling
  • MDL-75963 - Add "Code highlighter" filter to display coding style properly
  • MDL-77979 - TinyMCE tool for preventing auto-linking
  • MDL-79066 - Add fullscreen button


  • MDL-76710 - Add support for BigBlueButton Subplugins
  • MDL-78062 - Add backup support for BigBlueButton Subplugins
  • MDL-78960 - BigBlueButton Subplugin : allow action_url_addons to know about the instance

Quiz and questions

  • MDL-76629 - Add sticky student name column in Quiz results table
  • MDL-74054 - Give teachers more flexibility to customise their own view of the question bank
  • MDL-72321 - Better searching/filtering in the question bank, so more flexible randomisation in quizzes
  • MDL-77218 - Quiz/questions preview: explanatory text that preview settings only affect the preview
  • MDL-77564 - Quiz display options: make it possible to completely hide the grade information
  • MDL-77127 - Allow students to hide the timer in a timed quiz
  • MDL-77745 - Anywhere a teacher views questions, display version information
  • MDL-78823 - Implement qbank plugin enabled/disabled events
  • MDL-77872 - Increase the width of Quiz editing page to improve usability

Report builder

  • MDL-78117 - Create a custom report filter on context level
  • MDL-76471 - Create a report builder filter for "enrolment name"
  • MDL-76900 - Separate course participant enrol/role elements to new report entities
  • MDL-78879 - Support "not" / inversion of category conditions in report builder
  • MDL-75810 - Add tag support to badges custom report source
  • MDL-76902 - Create "Course categories" custom report source
  • MDL-78755 - Course participants report source should show active enrolments by default
  • MDL-77700 - Include user in custom report for comments on blog entries
  • MDL-76295 - Implement default report sorting in all report sources
  • MDL-78835 - Include custom fields in report group/grouping entities
  • MDL-78741 - Allow reporting/filtering on context path and parent
  • MDL-77532 - Include custom fields in cohort report entity
  • MDL-77061 - Add search and filter function in Manage Badges page
  • MDL-78532 - Create a new Web Service to retrieve system reports (core_reportbuilder_retrieve_system_report)
  • MDL-77067 - Indicate where report audiences are used in schedules
  • MDL-77614 - Reports shouldn't allow adding new entities whose name was already added

Content bank and H5P

  • MDL-76338 - Enable content to be copied in content bank
  • MDL-77667 - Display full course name in content bank for selection
  • MDL-74773 - Contentbank: add notification when updating

Accessibility improvements

  • MDL-75762 - Retain course page position when pressing back button from activity/resource
  • MDL-74869 - Activity icon colours should be SCSS variables so they are easy to override

Usability improvements

  • MDL-71212 - Add course kebab menu with 'Collapse all' and 'Expand all' options to course index
  • MDL-78474 - Enable users to personalise the name for the resource "Text and media area"
  • MDL-76203 - Add support for BDI tag in HTML Purifier
  • MDL-74679 - Allow students to send Q&A forum post notifications with no editing-time delay
  • MDL-77793 - Remove the legacy theme selector
  • MDL-63759 - Replace geoIP lookup with openstreetmap
  • MDL-76982 - Add floating previous/next buttons to navigate book chapters
  • MDL-73464 - Focus on chapter content when navigating to next/previous Book chapter
  • MDL-76270 - Enable/disable group messaging in bulk
  • MDL-78184 - Improve user flow for connecting to a open badges backpack
  • MDL-44190 - Select current course by default when restoring a single activity from within a course or activity
  • MDL-78630 - A notification should be displayed when a user's account is locked/unlocked
  • MDL-78579 - Glossary should display number of entries pending approval
  • MDL-78503 - Web service tokens: Add a Last Access column at the table view
  • MDL-79042 - MathJax: Notify when we finish rendering all the equations

Other Highlights

Functional changes

  • MDL-48762 - Restrict access to course based on start and end date
  • MDL-40084 - Export related files in database activity export
  • MDL-73325 - Enable support for tagging badges
  • MDL-45452 - Completion report: Date format for "Excel-compatible format" CSV export updated to use Excel compatible format
  • MDL-75802 - A (teacher) user should not be able to un-enrol themselves via bulk un-enrolment
  • MDL-67186 - Add custom fields to groups and groupings
  • MDL-73839 - Allow using cohort enrolment when uploading course via CSV
  • MDL-78972 - Update 'Delete' colour in activity action menu
  • MDL-78341 - Improve the progress bar rendering to re-align with bootstrap
  • MDL-78175 - Move role renaming settings to a participant -> enrolments page

For administrators

  • MDL-69489 - Enable Admins to restrict LTI Tools to specific Categories
  • MDL-77443 - Event Monitor: Course and activity name variables for event monitoring rules
  • MDL-78993 - Remove the $CFG->svgicons setting
  • MDL-67529 - GDPR: Option to filter which courses are included in data requests
  • MDL-78312 - User selectors: add an 'exact match only' option
  • MDL-77260 - Make it easier to find a specific component in event monitoring tool
  • MDL-78468 - Remove the legacy theme settings enabledevicedetection and devicedetectregex
  • MDL-79090 - Enable and disable scheduled tasks from the CLI
  • MDL-71421 - Move php-sodium recommendation back to requirement
  • MDL-78132 - Improve the workflow for creating badge backpack
  • MDL-76104 - Add Moodle filters support to user tours
  • MDL-78019 - Log every time a user deletes a file from the draft area


  • MDL-79242 - Improve the UX for first time users of the Android app via the Google Play install referrer API
  • MDL-74263 - Enable guest access with password support on the app


  • MDL-46279 - Refactor SCORM database schema to improve performance
  • MDL-78212 - Allow MySQL database driver to set MySQL options for MYSQLI_CLIENT_COMPRESS
  • MDL-77797 - Make LaTeX files cached public immutable so can be served by a CDN

Security improvements

  • MDL-54704 - SSL support for connection to Postgres and MySQL Database
  • MDL-67390 - Update password hashing to SHA-512
  • MDL-72622 - Support TLS connections for Redis
  • MDL-76656 - Web service tokens should be read-once
  • MDL-50160 - HTTP only cookies (cookiehttponly) default set to on and UI setting removed
  • MDL-67774 - Specify password peppers in config.php
  • MDL-53368 - Captcha available on login page
  • MDL-69958 - Support /.well-known/password-change requests from password managers
  • MDL-78801 - Add Auto logout settings for the mobile app
  • MDL-78698 - Deprecate random_bytes_emulate function
  • MDL-78571 - Media: Allow Vimeo do not track option
  • MDL-62401 - Embed YouTube videos with nocookie extension
  • MDL-75372 - Add logging for URLs which fail the cURL security helper blocking

For developers

  • MDL-76405 - Prepare Moodle for PHP 8.2
  • MDL-74954 - Hooks as replacement for some one-to-many lib.php callbacks based on PSR-14
  • MDL-79088 - Create hooks for adding items to the site primary navigation
  • MDL-79338 - Add support for hook callback redirection in tests
  • MDL-79144 - Allow hooks to define tags
  • MDL-77863 - Convert hard coded colours to use variables to make theme customisation easier
  • MDL-43195 - New Creative Commons Licenses version 4
  • MDL-32278 - Lib: improve print_object to handle recursion, produce prettier output
  • MDL-78109 - Cache: Remove harmful requirelockingwrite/requirelockingread options
  • MDL-77353 - Create generic core_user functions for generating and displaying user details
  • MDL-78316 - Convert IconSystem to ESM
  • MDL-74301 - Upgrade Eslint and audit rules
  • MDL-78467 - Cache: Improve cache locking API
  • MDL-77991 - Create a new generic select and search style element
  • MDL-78266 - Break core/templates into smaller, constituent parts
  • MDL-78884 - Remove sized files for MIME icons and update them with new SVG files
  • MDL-79039 - MathJax: Rewrite old JavaScript to AMD module
  • MDL-78934 - Move from (archived) Goutte to BrowserKit
  • MDL-67271 - Add missing SVG files for FontAwesome images
  • MDL-79031 - Add a JavaScript event for filters to trigger when they have finished rendering
  • MDL-78306 - Convert core/modal and remaining legacy uses to ESM

Web service additions and updates

  • MDL-74570 - New web service core_badges_get_user_badge
  • MDL-74568 - New web service mod_chat_view_sessions
  • MDL-78844 - New web service to check access to a system report
  • MDL-56020 - New Web Services for global search


  • MDL-61165 - Remove support for Legacy cron
  • MDL-78561 - Deprecate grade_helper:get_lang_string method
  • MDL-77174 - Deprecate moodle-core-notification-confirm
  • MDL-79134 - Deprecate MD5 for included user passwords in Backup
  • MDL-79313 - Deprecate unused \calendar_top_controls()
  • MDL-78328 - Deprecate forum_print_discussion_header
  • MDL-71067 - Final deprecation of whitelist properties in coverage_info
  • MDL-69530 - Final deprecation of \core_h5p\file_storage::EDITOR_FILEAREA constant
  • MDL-78012 - Final deprecation of badge backpack methods from 3.11
  • MDL-71183 - Final deprecation of \core_course_renderer::course_section_cm_completion()
  • MDL-71196 - Final deprecation of *_get_completion_state() callbacks
  • MDL-71331 - Final deprecation of course_section_add_cm_control_nonajax()
  • MDL-71494 - Final deprecation of the $extradetails parameter in mod_feedback\output\summary constructor

Component API updates