What do I do with a normal q-q plot and residuals but a very low R2 Does anyone know what to do if you have a really low r2 number (18%) but the residual and Q-Q plots look normal ?
The distribution is normal in the graphs for my multiple regression analysis but the r2 number is only 18% (0.18) ? How do I explain this as how effective it would be as a predicter as aren’t these conflicting results ?

There is nothing wrong with your R2 (barring some details you may have left out). I have simulated some weakly correlated, normally distributed data to show how this is okay. First I load the tidyverse and ggfortify packages for plotting and making tibbles. Then I set a random seed so you can emulate the results of the randomization, followed by a simulation of randomly distributed bivariate data with a normal distribution.
#### Library ####
library(tidyverse)
library(ggfortify)

#### Create Data ####
set.seed(123)
x <- rnorm(n=1000)
y <- rnorm(n=1000) 
df <- tibble(x,y)

You can see right away when plotting that the correlation is pretty weak and the regression line shows this.
#### Plot ####
df %>% 
  ggplot(aes(x,y))+
  geom_point(alpha = .4)+
  geom_smooth(method = "lm")+
  labs(x="X",
       y="Y",
       title = "Randomly Distributed Bivariate Data")


After fitting the regression...
#### Fit Reg ####
fit <- lm(y~x,df)
summary(fit)

The summary shows the R2 is fairly low (which isnt problematic, only an indicator of the nature of the data):
Call:
lm(formula = y ~ x, data = df)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.0279 -0.6914  0.0043  0.7087  3.2911 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.04105    0.03183   1.290  0.19751   
x            0.08805    0.03211   2.742  0.00621 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.006 on 998 degrees of freedom
Multiple R-squared:  0.007479,  Adjusted R-squared:  0.006484 
F-statistic:  7.52 on 1 and 998 DF,  p-value: 0.006211

Finally, when plotting the residuals, they look very normal:
#### Check Residuals ####
autoplot(fit)


As you can see here, this is a normal property of weakly correlated but normally distributed data. Hopefully this gives you a sense of how this is okay, and you should report your metrics as is, so long as there aren't other major details you have left out.
