To be sure your wallet has sufficient entropy, you need to validate the code. Trust, but verify. Do your own research. Don't take the word of a bunch of keyboard warriors paid to post on Bitcointalk.org.
Sure, that's easier said than done for most of us who are not programmers, but this is one of the use cases where AI comes in handy.
Electrum has been around for a long time, and it's been vetted by many unbiased individuals who have nothing to gain (and in some cases, everything to lose) by hiding errors or maliciousness in the code. But, that doesn't mean you should not do your own due diligence. I did a quick google search and came up with the file that defines the entropy used for seed generation:
https://github.com/spesmilo/electrum/blob/master/electrum/mnemonic.py#L207 def make_seed(self, *, seed_type: str | None = None, num_bits: int | None = None) -> str:
from .keystore import bip39_is_checksum_valid
if seed_type is None:
seed_type = 'segwit'
if num_bits is None:
num_bits = 132
prefix = version.seed_prefix(seed_type)
# increase num_bits in order to obtain a uniform distribution for the last word
bpw = math.log(len(self.wordlist), 2)
num_bits = int(math.ceil(num_bits/bpw) * bpw)
self.logger.info(f"make_seed. prefix: '{prefix}', entropy: {num_bits} bits")
# generate random
entropy = 1
while entropy < pow(2, num_bits - bpw): # try again if seed would not contain enough words
entropy = crandom.get_rand_below(pow(2, num_bits))
# brute-force seed that has correct "version number"
nonce = 0
while True:
nonce += 1
i = entropy + nonce
seed = self.mnemonic_encode(i)
if i != self.mnemonic_decode(seed):
raise Exception('Cannot extract same entropy from mnemonic!')
if is_old_seed(seed):
continue
# Make sure the mnemonic we generate is not also a valid bip39 seed
# by accident. Note that this test has not always been done historically,
# so it cannot be relied upon.
if bip39_is_checksum_valid(seed, wordlist=self.wordlist) == (True, True):
continue
if is_new_seed(seed, prefix):
break
num_words = len(seed.split())
self.logger.info(f'{num_words} words')
if (final_seed_type := calc_seed_type(seed)) != seed_type:
# note: I guess this can probabilistically happen for old "2fa" seeds that depend on the word count
raise Exception(f"{final_seed_type=!r} does not match requested {seed_type=!r}. have {num_words=!r}")
return seed