Consider a q-ary block code satisfying the property that no \(\ell\) -letters long codeword’s prefix occurs as a suffix of any codeword for \(\ell\) inside some interval. We determine a general upper bound on the maximum size of these codes and a tighter bound for codes where overlaps with lengths not exceeding k are prohibited. We then provide constructions for codes with various restrictions on overlap lengths and use them to determine lower bounds on the maximum sizes. In particular, we construct \((1,k)\) -overlap-free codes where \(k \geq n/2\) and n denotes the block size, expand a known construction of \((k,n-1)\) -overlap-free codes, and combine the ideas behind both constructions to obtain \((t_1,t_2)\) -overlap-free codes and codes that are simultaneously \((1,k)\) - and \((n-k,n-1)\) -overlap-free for some \(k < n/2\) . In the case when overlaps of lengths between 1 and k are prohibited, we complete the characterisation of non-expandable codes initiated by Cai, Wang, and Feng (IEEE Trans Inf Theory, 2023).