Shortcode return vs echo. Return messes with data URLs, echo does not

Thanks to @fuxia, adding data to allowed protocols fixes the problem and I can happily use return.

add_filter( 'kses_allowed_protocols', function ( $protocols ) {
  $protocols[] = 'data';
  return $protocols;
});

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)