Why does Thickbox jQuery load on my site?

You are perfectly right, ThickBox is old and it supposes to be present in admin Dashboard only, but beeing able to change this kind of behavior makes WordPress great (and sometimes not).

Every theme or plugin can actually call this library for his help with the

wp_enqueue_script(‘thickbox’) function or it can use it as a dependency like this:

wp_enqueue_script( 'my_own_modal' , _URL_TO_FILE_, array('thickbox') );

The third parameter works like a dependency array, and every library there is loaded. Sometimes developers miss-enqueue it by mistake in front-end too, or intentionally when a plugin creates an image uploader in front-end.

Solution?

Well, you can try to disable every plugin and see which one does this or you can search all the wp-content folder for the thickbox key and see where it is called.

If you cannot find it you can try to force its removal with the wp_deregister_script

<?php
function my_de_scripts_method() {
    wp_deregister_script('thickbox');
}    

add_action('wp_enqueue_scripts', 'my_de_scripts_method', 9999);
?>

If this still doesn’t work(it could be called late or on another hook) you can take the dirty way, register the thickbox before WordPress does with and empty path, and it will be ignored.

<?php
function my_over_register_scripts_method() {
    wp_register_script( 'thickbox', '' );
}    

add_action('wp_enqueue_scripts', 'my_over_register_scripts_method', 1);
?>

Edit: If you want to remove it only in front-end just use the is_admin conditional

<?php
function my_de_scripts_method() {
    if ( ! is_admin() ) {
        wp_deregister_script('thickbox');
    }
}    

add_action('wp_enqueue_scripts', 'my_de_scripts_method', 9999);
?>