The sys schema in MySQL 5.7 and later has the schema_unused_indexes view:
These views display indexes for which there are no events, which indicates that they are not being used. By default, rows are sorted by schema and table.
This view is most useful when the server has been up and processing long enough that its workload is representative. Otherwise, presence of an index in this view may not be meaningful.
The schema_unused_indexes view has these columns:
The schema name.
The table name.
The unused index name.
Some users would like this functionality in MariaDB as well.