The text or image used to create an anchor has two main functions: to connect a viewer to further information, and to highlight the relevance of a particular keyword phrase, term or image.
Links may be anchored from any text or image element inside an <a> html element. For the purpose of SEO, anchor texts also highlight to search engines how the text within the anchor may be relevant to the destination page.
But over-use of keywords in anchor texts might come across looking spammy.
Popular opinion is divided on how much anchor text for internal links should have keywords, but most are agreed that links from other sites should not over-use keywords anchors.
Here’s what Shane Barker wrote for SEMRush back in 2016 on this topic:
In the post-penguin and 2016 SEO strategy, the exact match anchors should be minimized to 1% or less. You need to be more careful when using this type of anchors since they can penalize your site. The main types of anchor texts that are both safe and effective are naked link anchors and branded anchors. Focus on building your links organically using quality content and a diverse range of anchor texts with proper co-citation and co-occurrence. This will help you optimize your link profile and make it next to impossible for Google to penalize you.
Branded Anchor text: 40%
Unique/Other anchor text: 25%
Naked link anchor: 15%
Brand + keyword anchor: 5%
Partial match anchor text: 5%
Genric anchor text: 1-5%
Long tail anchor text: 2-4%
Exact Match Anchors: Less Than 1%
My feeling is that this sets a pretty good guideline for current use too. I’m certainly trying to follow this advice.